#include "TextClassList.h"
#include "TextClass.h"
-#include "support/debug.h"
#include "Lexer.h"
+#include "support/debug.h"
+#include "support/FileName.h"
#include "support/filetools.h"
#include <boost/bind.hpp>
#include <fstream>
+using namespace std;
+using namespace lyx::support;
namespace lyx {
-using support::FileName;
-using support::addName;
-using support::libFileSearch;
-using support::makeDisplayPath;
-
using boost::bind;
using boost::regex;
using boost::smatch;
-using namespace std;
-
// Gets textclass number from name
-pair<bool, textclass_type> const
+pair<bool, TextClassIndex> const
TextClassList::numberOfClass(string const & textclass) const
{
ClassList::const_iterator cit =
textclass));
return cit != classlist_.end() ?
- make_pair(true, textclass_type(cit - classlist_.begin())) :
- make_pair(false, textclass_type(0));
+ make_pair(true, TextClassIndex(cit - classlist_.begin())) :
+ make_pair(false, TextClassIndex(0));
}
// Gets a textclass structure from number
TextClass const &
-TextClassList::operator[](textclass_type textclass) const
+TextClassList::operator[](TextClassIndex textclass) const
+{
+ if (textclass >= classlist_.size())
+ return classlist_[0];
+
+ //FIXME I don't believe the following line is actually necessary (rgh)
+ classlist_[textclass].load();
+ return classlist_[textclass];
+}
+
+TextClass & TextClassList::at(TextClassIndex textclass)
{
if (textclass >= classlist_.size())
return classlist_[0];
// used when sorting the textclass list.
class less_textclass_avail_desc
- : public std::binary_function<TextClass, TextClass, int>
+ : public binary_function<TextClass, TextClass, int>
{
public:
int operator()(TextClass const & tc1,
bool TextClassList::read()
{
Lexer lex(0, 0);
- support::FileName const real_file = libFileSearch("", "textclass.lst");
+ FileName const real_file = libFileSearch("", "textclass.lst");
LYXERR(Debug::TCLASS, "Reading textclasses from `" << real_file << '\'');
if (real_file.empty()) {
}
-void TextClassList::reset(textclass_type const textclass) {
+void TextClassList::reset(TextClassIndex const & textclass)
+{
if (textclass >= classlist_.size())
return;
TextClass const & tc = classlist_[textclass];
}
-std::pair<bool, textclass_type> const
-TextClassList::addTextClass(std::string const & textclass, std::string const & path)
+pair<bool, TextClassIndex> const
+TextClassList::addTextClass(string const & textclass, string const & path)
{
// only check for textclass.layout file, .cls can be anywhere in $TEXINPUTS
// NOTE: latex class name is defined in textclass.layout, which can be different from textclass
tmpl.load(path);
// Do not add this local TextClass to classlist_ if it has
// already been loaded by, for example, a master buffer.
- pair<bool, lyx::textclass_type> pp =
+ pair<bool, lyx::TextClassIndex> pp =
textclasslist.numberOfClass(textclass);
// only layouts from the same directory are considered to be identical.
if (pp.first && classlist_[pp.second].description() == tmpl.description())
}
}
// If .layout is not in local directory, or an invalid layout is found, return false
- return make_pair(false, textclass_type(0));
+ return make_pair(false, TextClassIndex(0));
}
TextClassList textclasslist;
-textclass_type defaultTextclass()
+TextClassIndex defaultTextclass()
{
// We want to return the article class. if `first' is
// true in the returned pair, then `second' is the textclass