revert last patch. there's something wrong, possibly unrelated to this

patch, but as this was rather largish...


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24099 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
André Pönitz 2008-04-02 22:44:33 +00:00
parent 7677e9487c
commit 2012beb58e
43 changed files with 154 additions and 186 deletions

View File

@ -657,7 +657,7 @@ bool Buffer::readString(string const & s)
// remove dummy empty par
paragraphs().clear();
Lexer lex;
Lexer lex(0, 0);
istringstream is(s);
lex.setStream(is);
FileName const name = FileName::tempName();
@ -705,7 +705,7 @@ bool Buffer::readFile(FileName const & filename)
// remove dummy empty par
paragraphs().clear();
Lexer lex;
Lexer lex(0, 0);
lex.setFile(fname);
if (readFile(lex, fname) != success)
return false;

View File

@ -35,7 +35,7 @@ enum CmdDefTags {
BN_DEFINE
};
LexerKeyword cmdDefTags[] = {
keyword_item cmdDefTags[] = {
{ "\\def_file", BN_DEFFILE },
{ "\\define", BN_DEFINE }
};
@ -45,7 +45,9 @@ LexerKeyword cmdDefTags[] = {
bool CmdDef::read(string const & def_file)
{
Lexer lexrc(cmdDefTags);
const int cmdDefCount = sizeof(cmdDefTags) / sizeof(keyword_item);
Lexer lexrc(cmdDefTags, cmdDefCount);
if (lyxerr.debugging(Debug::PARSER))
lexrc.printTable(lyxerr);

View File

@ -107,7 +107,7 @@ void ConverterCache::Impl::readIndex()
time_t const now = current_time();
FileName const index(addName(cache_dir.absFilename(), "index"));
ifstream is(index.toFilesystemEncoding().c_str());
Lexer lex;
Lexer lex(0, 0);
lex.setStream(is);
while (lex.isOK()) {
if (!lex.next(true))

View File

@ -467,7 +467,7 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
{
// We must read the symbolsfile first, because the Encoding
// constructor depends on it.
Lexer symbolslex;
Lexer symbolslex(0, 0);
symbolslex.setFile(symbolsfile);
while (symbolslex.isOK()) {
char_type symbol;
@ -525,14 +525,15 @@ void Encodings::read(FileName const & encfile, FileName const & symbolsfile)
enum Encodingtags {
et_encoding = 1,
et_end,
et_last
};
struct LexerKeyword encodingtags[] = {
struct keyword_item encodingtags[et_last - 1] = {
{ "encoding", et_encoding },
{ "end", et_end }
};
Lexer lex(encodingtags);
Lexer lex(encodingtags, et_last - 1);
lex.setFile(encfile);
while (lex.isOK()) {
switch (lex.lex()) {

View File

@ -664,7 +664,7 @@ string Font::toString(bool const toggle) const
bool Font::fromString(string const & data, bool & toggle)
{
istringstream is(data);
Lexer lex;
Lexer lex(0,0);
lex.setStream(is);
int nset = 0;

View File

@ -125,7 +125,7 @@ enum BindTags {
BN_UNBIND,
};
LexerKeyword bindTags[] = {
keyword_item bindTags[] = {
{ "\\bind", BN_BIND },
{ "\\bind_file", BN_BINDFILE },
{ "\\unbind", BN_UNBIND },
@ -136,7 +136,9 @@ LexerKeyword bindTags[] = {
bool KeyMap::read(string const & bind_file, KeyMap * unbind_map)
{
Lexer lexrc(bindTags);
const int bindCount = sizeof(bindTags) / sizeof(keyword_item);
Lexer lexrc(bindTags, bindCount);
if (lyxerr.debugging(Debug::PARSER))
lexrc.printTable(lyxerr);
@ -181,8 +183,7 @@ bool KeyMap::read(string const & bind_file, KeyMap * unbind_map)
FuncRequest func = lyxaction.lookupFunc(cmd);
if (func. action == LFUN_UNKNOWN_ACTION) {
lexrc.printError("BN_BIND: Unknown LyX"
" function `$$Token'");
lexrc.printError("BN_BIND: Unknown LyX function `$$Token'");
error = true;
break;
}

View File

@ -237,7 +237,7 @@ void LaTeXFeatures::require(set<string> const & names)
void LaTeXFeatures::getAvailable()
{
Lexer lex;
Lexer lex(0, 0);
support::FileName const real_file = libFileSearch("", "packages.lst");
if (real_file.empty())

View File

@ -45,7 +45,7 @@ void Languages::read(FileName const & filename)
encodings.fromLyXName("iso8859-1"),
"latex", "");
Lexer lex;
Lexer lex(0, 0);
lex.setFile(filename);
while (lex.isOK()) {
string lang;

View File

@ -134,7 +134,7 @@ Layout::Layout()
bool Layout::read(Lexer & lexrc, TextClass const & tclass)
{
// This table is sorted alphabetically [asierra 30March96]
LexerKeyword layoutTags[] = {
keyword_item layoutTags[] = {
{ "align", LT_ALIGN },
{ "alignpossible", LT_ALIGNPOSSIBLE },
{ "bottomsep", LT_BOTTOMSEP },
@ -191,7 +191,7 @@ bool Layout::read(Lexer & lexrc, TextClass const & tclass)
bool error = false;
bool finished = false;
lexrc.pushTable(layoutTags);
lexrc.pushTable(layoutTags, LT_INTITLE);
// parse style section
while (!finished && lexrc.isOK() && !error) {
int le = lexrc.lex();
@ -515,7 +515,7 @@ enum AlignTags {
void Layout::readAlign(Lexer & lexrc)
{
LexerKeyword alignTags[] = {
keyword_item alignTags[] = {
{ "block", AT_BLOCK },
{ "center", AT_CENTER },
{ "layout", AT_LAYOUT },
@ -553,7 +553,7 @@ void Layout::readAlign(Lexer & lexrc)
void Layout::readAlignPossible(Lexer & lexrc)
{
LexerKeyword alignTags[] = {
keyword_item alignTags[] = {
{ "block", AT_BLOCK },
{ "center", AT_CENTER },
{ "layout", AT_LAYOUT },
@ -561,9 +561,9 @@ void Layout::readAlignPossible(Lexer & lexrc)
{ "right", AT_RIGHT }
};
lexrc.pushTable(alignTags);
lexrc.pushTable(alignTags, AT_LAYOUT);
alignpossible = LYX_ALIGN_NONE | LYX_ALIGN_LAYOUT;
int lineno = lexrc.lineNumber();
int lineno = lexrc.getLineNo();
do {
int le = lexrc.lex();
switch (le) {
@ -589,7 +589,7 @@ void Layout::readAlignPossible(Lexer & lexrc)
alignpossible |= LYX_ALIGN_LAYOUT;
break;
}
} while (lineno == lexrc.lineNumber());
} while (lineno == lexrc.getLineNo());
lexrc.popTable();
}
@ -610,7 +610,7 @@ enum LabelTypeTags {
void Layout::readLabelType(Lexer & lexrc)
{
LexerKeyword labelTypeTags[] = {
keyword_item labelTypeTags[] = {
{ "bibliography", LA_BIBLIO },
{ "centered_top_environment", LA_CENTERED_TOP_ENVIRONMENT },
{ "counter", LA_COUNTER },
@ -666,7 +666,7 @@ void Layout::readLabelType(Lexer & lexrc)
}
static LexerKeyword endlabelTypeTags[] =
static keyword_item endlabelTypeTags[] =
{
{ "box", END_LABEL_BOX },
{ "filled_box", END_LABEL_FILLED_BOX },
@ -700,7 +700,7 @@ void Layout::readEndLabelType(Lexer & lexrc)
void Layout::readMargin(Lexer & lexrc)
{
LexerKeyword marginTags[] = {
keyword_item marginTags[] = {
{ "dynamic", MARGIN_DYNAMIC },
{ "first_dynamic", MARGIN_FIRST_DYNAMIC },
{ "manual", MARGIN_MANUAL },
@ -732,7 +732,7 @@ void Layout::readMargin(Lexer & lexrc)
void Layout::readLatexType(Lexer & lexrc)
{
LexerKeyword latexTypeTags[] = {
keyword_item latexTypeTags[] = {
{ "bib_environment", LATEX_BIB_ENVIRONMENT },
{ "command", LATEX_COMMAND },
{ "environment", LATEX_ENVIRONMENT },
@ -773,7 +773,7 @@ enum SpacingTags {
void Layout::readSpacing(Lexer & lexrc)
{
LexerKeyword spacingTags[] = {
keyword_item spacingTags[] = {
{"double", ST_SPACING_DOUBLE },
{"onehalf", ST_SPACING_ONEHALF },
{"other", ST_OTHER },

View File

@ -84,7 +84,7 @@ LayoutFile &
// Reads LyX textclass definitions according to textclass config file
bool LayoutFileList::read()
{
Lexer lex;
Lexer lex(0, 0);
FileName const real_file = libFileSearch("", "textclass.lst");
LYXERR(Debug::TCLASS, "Reading textclasses from `" << real_file << '\'');

View File

@ -45,7 +45,7 @@ namespace lyx {
class Lexer::Pimpl {
public:
///
Pimpl(LexerKeyword * tab, int num);
Pimpl(keyword_item * tab, int num);
///
string const getString() const;
///
@ -55,7 +55,7 @@ public:
///
void printTable(ostream & os);
///
void pushTable(LexerKeyword * tab, int num);
void pushTable(keyword_item * tab, int num);
///
void popTable();
///
@ -89,7 +89,7 @@ public:
///
string name;
///
LexerKeyword * table;
keyword_item * table;
///
int no_items;
///
@ -116,10 +116,10 @@ private:
PushedTable()
: table_elem(0), table_siz(0) {}
///
PushedTable(LexerKeyword * ki, int siz)
PushedTable(keyword_item * ki, int siz)
: table_elem(ki), table_siz(siz) {}
///
LexerKeyword * table_elem;
keyword_item * table_elem;
///
int table_siz;
};
@ -132,10 +132,10 @@ private:
namespace {
class CompareTags
: public binary_function<LexerKeyword, LexerKeyword, bool> {
: public binary_function<keyword_item, keyword_item, bool> {
public:
// used by lower_bound, sort and sorted
bool operator()(LexerKeyword const & a, LexerKeyword const & b) const
bool operator()(keyword_item const & a, keyword_item const & b) const
{
// we use the ascii version, because in turkish, 'i'
// is not the lowercase version of 'I', and thus
@ -147,7 +147,7 @@ public:
} // end of anon namespace
Lexer::Pimpl::Pimpl(LexerKeyword * tab, int num)
Lexer::Pimpl::Pimpl(keyword_item * tab, int num)
: is(&fb_), table(tab), no_items(num),
status(0), lineno(0), commentChar('#')
{
@ -204,7 +204,7 @@ void Lexer::Pimpl::verifyTable()
}
void Lexer::Pimpl::pushTable(LexerKeyword * tab, int num)
void Lexer::Pimpl::pushTable(keyword_item * tab, int num)
{
PushedTable tmppu(table, no_items);
pushed.push(tmppu);
@ -482,8 +482,8 @@ bool Lexer::Pimpl::next(bool esc /* = false */)
int Lexer::Pimpl::search_kw(char const * const tag) const
{
LexerKeyword search_tag = { tag, 0 };
LexerKeyword * res =
keyword_item search_tag = { tag, 0 };
keyword_item * res =
lower_bound(table, table + no_items,
search_tag, CompareTags());
// use the compare_ascii_no_case instead of compare_no_case,
@ -611,17 +611,11 @@ void Lexer::Pimpl::pushToken(string const & pt)
//
//////////////////////////////////////////////////////////////////////
Lexer::Lexer()
: pimpl_(new Pimpl(0, 0))
Lexer::Lexer(keyword_item * tab, int num)
: pimpl_(new Pimpl(tab, num))
{}
void Lexer::init(LexerKeyword * tab, int num)
{
pimpl_ = new Pimpl(tab, num);
}
Lexer::~Lexer()
{
delete pimpl_;
@ -634,13 +628,13 @@ bool Lexer::isOK() const
}
void Lexer::setLineNumber(int l)
void Lexer::setLineNo(int l)
{
pimpl_->lineno = l;
}
int Lexer::lineNumber() const
int Lexer::getLineNo() const
{
return pimpl_->lineno;
}
@ -652,7 +646,7 @@ istream & Lexer::getStream()
}
void Lexer::pushTable(LexerKeyword * tab, int num)
void Lexer::pushTable(keyword_item * tab, int num)
{
pimpl_->pushTable(tab, num);
}

View File

@ -24,21 +24,14 @@ namespace lyx {
namespace support { class FileName; }
class PushPopHelper;
/** A helper structure to describe a keyword for the Lexer.
Usually used bundled in C style arrays and passed to the
Lexer using a LexerKeywordTable object.
*/
struct LexerKeyword
{
/// the string to be recognized
///
struct keyword_item {
///
char const * tag;
/// a corresponding numerical id
///
int code;
};
/** Generalized simple lexical analizer.
Use the method isOK() to check if there is still data available
for lexing. Use one of the the operators void* or ! to test if
@ -60,15 +53,10 @@ struct LexerKeyword
@see LyXRC.cpp for an example of usage.
*/
class Lexer
{
class Lexer {
public:
/// initialize Lexer with no special keywords.
Lexer();
/// initialize Lexer with a bunch of keywords
template<int N> Lexer(LexerKeyword (&table)[N])
: pimpl_(0) { init(table, N); }
///
Lexer(keyword_item *, int);
///
~Lexer();
@ -85,7 +73,7 @@ public:
};
/// stream is open and end of stream is not reached
/// FIXME: test also if pushToken is not empty
/// FIXME: test also if pushTok is not empty
/// FIXME: the method should be renamed to something like
/// dataAvailable(), in order to reflect the real behavior
bool isOK() const;
@ -103,7 +91,7 @@ public:
///
std::istream & getStream();
/// Danger! Don't use it unless you know what you are doing.
void setLineNumber(int l);
void setLineNo(int l);
/// Change the character that begins a comment. Default is '#'
void setCommentChar(char c);
@ -123,8 +111,8 @@ public:
/// Push a token, that next token got from lyxlex.
void pushToken(std::string const &);
/// return the current line number
int lineNumber() const;
///
int getLineNo() const;
///
int getInteger() const;
@ -151,8 +139,7 @@ public:
bool eatLine();
/// Pushes a token list on a stack and replaces it with a new one.
template<int N> void pushTable(LexerKeyword (&table)[N])
{ pushTable(table, N); }
void pushTable(keyword_item *, int);
/** Pops a token list into void and replaces it with the one now
on top of the stack.
@ -186,17 +173,10 @@ public:
static std::string const quoteString(std::string const &);
private:
/// noncopyable
/// noncopiable
Lexer(Lexer const &);
void operator=(Lexer const &);
///
friend class PushPopHelper;
///
void init(LexerKeyword *, int);
void pushTable(LexerKeyword *, int);
///
class Pimpl;
///
@ -212,18 +192,14 @@ private:
exceptions.
@author Lgb
*/
class PushPopHelper
{
class PushPopHelper {
public:
///
PushPopHelper(Lexer & lexrc, LexerKeyword * i, int s)
: lex(lexrc)
{
PushPopHelper(Lexer & lexrc, keyword_item * i, int s) : lex(lexrc) {
lex.pushTable(i, s);
}
///
~PushPopHelper()
{
~PushPopHelper() {
lex.popTable();
}
///

View File

@ -979,7 +979,7 @@ bool LyX::readRcFile(string const & name)
// Read the ui file `name'
bool LyX::readUIFile(string const & name, bool include)
{
enum {
enum Uitags {
ui_menuset = 1,
ui_toolbars,
ui_toolbarset,
@ -987,7 +987,7 @@ bool LyX::readUIFile(string const & name, bool include)
ui_last
};
struct LexerKeyword uitags[] = {
struct keyword_item uitags[ui_last - 1] = {
{ "include", ui_include },
{ "menuset", ui_menuset },
{ "toolbars", ui_toolbars },
@ -1027,7 +1027,7 @@ bool LyX::readUIFile(string const & name, bool include)
uifiles.push_back(name);
LYXERR(Debug::INIT, "Found " << name << " in " << ui_path);
Lexer lex(uitags);
Lexer lex(uitags, ui_last - 1);
lex.setFile(ui_path);
if (!lex.isOK()) {
lyxerr << "Unable to set LyXLeX for ui file: " << ui_path

View File

@ -1487,7 +1487,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
Buffer defaults(fname);
istringstream ss(argument);
Lexer lex;
Lexer lex(0,0);
lex.setStream(ss);
int const unknown_tokens = defaults.readHeader(lex);
@ -1515,7 +1515,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
cur.recordUndoFullDocument();
istringstream ss(argument);
Lexer lex;
Lexer lex(0,0);
lex.setStream(ss);
int const unknown_tokens = buffer->readHeader(lex);

View File

@ -50,7 +50,7 @@ namespace os = support::os;
namespace {
// when adding something to this array keep it sorted!
LexerKeyword lyxrcTags[] = {
keyword_item lyxrcTags[] = {
{ "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND },
{ "\\allow_geometry_session", LyXRC::RC_GEOMETRY_SESSION },
{ "\\alternate_language", LyXRC::RC_ALT_LANG },
@ -184,7 +184,7 @@ LexerKeyword lyxrcTags[] = {
{ "\\visual_cursor" ,LyXRC::RC_VISUAL_CURSOR}
};
const int lyxrcCount = sizeof(lyxrcTags) / sizeof(lyxrcTags[0]);
const int lyxrcCount = sizeof(lyxrcTags) / sizeof(keyword_item);
} // namespace anon
@ -334,7 +334,7 @@ void oldFontFormat(string & family, string & foundry)
int LyXRC::read(FileName const & filename)
{
Lexer lexrc(lyxrcTags);
Lexer lexrc(lyxrcTags, lyxrcCount);
if (lyxerr.debugging(Debug::PARSER))
lexrc.printTable(lyxerr);
@ -349,12 +349,13 @@ int LyXRC::read(FileName const & filename)
int LyXRC::read(istream & is)
{
Lexer lexrc(lyxrcTags);
Lexer lexrc(lyxrcTags, lyxrcCount);
if (lyxerr.debugging(Debug::PARSER))
lexrc.printTable(lyxerr);
lexrc.setStream(is);
if (!lexrc.isOK()) return -2;
if (!lexrc.isOK())
return -2;
LYXERR(Debug::LYXRC, "Reading istream...");

View File

@ -8,7 +8,7 @@ MAINTAINERCLEANFILES += $(srcdir)/config.h.in
AM_CPPFLAGS += $(PCH_FLAGS) -I$(top_srcdir)/src $(BOOST_INCLUDES)
SUBDIRS = support frontends tex2lyx client lyxled .
SUBDIRS = support frontends tex2lyx client .
EXTRA_DIST = config.h.in \
Section.h \

View File

@ -90,7 +90,7 @@ bool ModuleList::load()
return false;
}
Lexer lex;
Lexer lex(0, 0);
if (!lex.setFile(real_file)) {
lyxerr << "ModuleList::load():"
"lyxlex was not able to set file: "

View File

@ -172,7 +172,7 @@ void ParagraphParameters::leftIndent(Length const & li)
void ParagraphParameters::read(string str, bool merge)
{
istringstream is(str);
Lexer lex;
Lexer lex(0, 0);
lex.setStream(is);
read(lex, merge);
}

View File

@ -135,10 +135,10 @@ void readParToken(Buffer const & buf, Paragraph & par, Lexer & lex,
par.params().read(lex);
} else if (token == "\\end_layout") {
LYXERR0("Solitary \\end_layout in line " << lex.lineNumber() << "\n"
LYXERR0("Solitary \\end_layout in line " << lex.getLineNo() << "\n"
<< "Missing \\begin_layout ?");
} else if (token == "\\end_inset") {
LYXERR0("Solitary \\end_inset in line " << lex.lineNumber() << "\n"
LYXERR0("Solitary \\end_inset in line " << lex.getLineNo() << "\n"
<< "Missing \\begin_inset ?");
} else if (token == "\\begin_inset") {
Inset * inset = readInset(lex, buf);
@ -277,7 +277,7 @@ void readParagraph(Buffer const & buf, Paragraph & par, Lexer & lex,
|| token == "\\end_deeper") {
lex.pushToken(token);
lyxerr << "Paragraph ended in line "
<< lex.lineNumber() << "\n"
<< lex.getLineNo() << "\n"
<< "Missing \\end_layout.\n";
break;
}

View File

@ -154,7 +154,7 @@ static void mathDispatch(Cursor & cur, FuncRequest const & cmd, bool display)
{
InsetMathHull * formula = new InsetMathHull;
istringstream is(to_utf8(sel));
Lexer lex;
Lexer lex(0, 0);
lex.setStream(is);
formula->read(lex);
if (formula->getType() == hullNone)

View File

@ -183,7 +183,7 @@ enum TextClassTags {
namespace {
LexerKeyword textClassTags[] = {
keyword_item textClassTags[] = {
{ "addtopreamble", TC_ADDTOPREAMBLE },
{ "classoptions", TC_CLASSOPTIONS },
{ "columns", TC_COLUMNS },
@ -249,7 +249,7 @@ bool TextClass::read(FileName const & filename, ReadType rt)
"LabelType No_Label\n"
"End";
istringstream ss(s);
Lexer lex(textClassTags);
Lexer lex(textClassTags, sizeof(textClassTags) / sizeof(textClassTags[0]));
lex.setStream(ss);
Layout lay;
lay.setName(emptylayout_);
@ -260,8 +260,9 @@ bool TextClass::read(FileName const & filename, ReadType rt)
};
layoutlist_.push_back(lay);
}
Lexer lexrc(textClassTags,
sizeof(textClassTags) / sizeof(textClassTags[0]));
Lexer lexrc(textClassTags);
lexrc.setFile(filename);
ReturnValues retval = read(lexrc, rt);
@ -290,7 +291,8 @@ bool TextClass::validate(std::string const & str)
bool TextClass::read(std::string const & str, ReadType rt)
{
Lexer lexrc(textClassTags);
Lexer lexrc(textClassTags,
sizeof(textClassTags) / sizeof(textClassTags[0]));
istringstream is(str);
lexrc.setStream(is);
ReturnValues retval = read(lexrc, rt);
@ -620,7 +622,7 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
void TextClass::readTitleType(Lexer & lexrc)
{
LexerKeyword titleTypeTags[] = {
keyword_item titleTypeTags[] = {
{ "commandafter", TITLE_COMMAND_AFTER },
{ "environment", TITLE_ENVIRONMENT }
};
@ -647,7 +649,7 @@ void TextClass::readTitleType(Lexer & lexrc)
void TextClass::readOutputType(Lexer & lexrc)
{
LexerKeyword outputTypeTags[] = {
keyword_item outputTypeTags[] = {
{ "docbook", DOCBOOK },
{ "latex", LATEX },
{ "literate", LITERATE }
@ -685,7 +687,7 @@ enum ClassOptionsTags {
void TextClass::readClassOptions(Lexer & lexrc)
{
LexerKeyword classOptionsTags[] = {
keyword_item classOptionsTags[] = {
{"end", CO_END },
{"fontsize", CO_FONTSIZE },
{"header", CO_HEADER },
@ -693,7 +695,7 @@ void TextClass::readClassOptions(Lexer & lexrc)
{"pagestyle", CO_PAGESTYLE }
};
lexrc.pushTable(classOptionsTags);
lexrc.pushTable(classOptionsTags, CO_END);
bool getout = false;
while (!getout && lexrc.isOK()) {
int le = lexrc.lex();
@ -744,7 +746,7 @@ enum FloatTags {
void TextClass::readFloat(Lexer & lexrc)
{
LexerKeyword floatTags[] = {
keyword_item floatTags[] = {
{ "end", FT_END },
{ "extension", FT_EXT },
{ "guiname", FT_NAME },
@ -756,7 +758,7 @@ void TextClass::readFloat(Lexer & lexrc)
{ "type", FT_TYPE }
};
lexrc.pushTable(floatTags);
lexrc.pushTable(floatTags, FT_END);
string type;
string placement;
@ -856,7 +858,7 @@ enum CounterTags {
void TextClass::readCounter(Lexer & lexrc)
{
LexerKeyword counterTags[] = {
keyword_item counterTags[] = {
{ "end", CT_END },
{ "labelstring", CT_LABELSTRING },
{ "labelstringappendix", CT_LABELSTRING_APPENDIX },
@ -864,7 +866,7 @@ void TextClass::readCounter(Lexer & lexrc)
{ "within", CT_WITHIN }
};
lexrc.pushTable(counterTags);
lexrc.pushTable(counterTags, CT_END);
docstring name;
docstring within;

View File

@ -49,12 +49,6 @@ private:
ToolbarBackend toolbarbackend;
/////////////////////////////////////////////////////////////////////////
//
// ToolbarItem
//
/////////////////////////////////////////////////////////////////////////
ToolbarItem::ToolbarItem(Type type, FuncRequest const & func, docstring const & label)
: type_(type), func_(func), label_(label)
{
@ -80,7 +74,7 @@ void ToolbarInfo::add(ToolbarItem const & item)
ToolbarInfo & ToolbarInfo::read(Lexer & lex)
{
enum {
enum tooltags {
TO_COMMAND = 1,
TO_ENDTOOLBAR,
TO_SEPARATOR,
@ -89,9 +83,10 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex)
TO_TABLEINSERT,
TO_POPUPMENU,
TO_ICONPALETTE,
TO_LAST
};
struct LexerKeyword toolTags[] = {
struct keyword_item toolTags[TO_LAST - 1] = {
{ "end", TO_ENDTOOLBAR },
{ "iconpalette", TO_ICONPALETTE },
{ "item", TO_COMMAND },
@ -123,7 +118,7 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex)
bool quit = false;
lex.pushTable(toolTags);
lex.pushTable(toolTags, TO_LAST - 1);
if (lyxerr.debugging(Debug::PARSER))
lex.printTable(lyxerr);
@ -202,12 +197,6 @@ ToolbarInfo & ToolbarInfo::read(Lexer & lex)
/////////////////////////////////////////////////////////////////////////
//
// ToolbarBackend
//
/////////////////////////////////////////////////////////////////////////
ToolbarBackend::ToolbarBackend()
{
@ -217,12 +206,13 @@ ToolbarBackend::ToolbarBackend()
void ToolbarBackend::readToolbars(Lexer & lex)
{
enum {
enum tooltags {
TO_TOOLBAR = 1,
TO_ENDTOOLBARSET,
TO_LAST
};
struct LexerKeyword toolTags[] = {
struct keyword_item toolTags[TO_LAST - 1] = {
{ "end", TO_ENDTOOLBARSET },
{ "toolbar", TO_TOOLBAR }
};
@ -233,7 +223,7 @@ void ToolbarBackend::readToolbars(Lexer & lex)
<< lex.getString() << '\'');
}
lex.pushTable(toolTags);
lex.pushTable(toolTags, TO_LAST - 1);
if (lyxerr.debugging(Debug::PARSER))
lex.printTable(lyxerr);

View File

@ -169,11 +169,20 @@ bool Trans::isDefined() const
}
enum {
enum kmaptags_ {
KCOMB = 1,
KMOD,
KMAP,
KXMOD,
K_LAST
};
struct keyword_item kmapTags[K_LAST - 1] = {
{"\\kcomb", KCOMB },
{ "\\kmap", KMAP },
{ "\\kmod", KMOD },
{ "\\kxmod", KXMOD }
};
@ -378,19 +387,12 @@ docstring const Trans::process(char_type c, TransManager & k)
int Trans::load(string const & language)
{
struct LexerKeyword kmapTags[] = {
{"\\kcomb", KCOMB },
{ "\\kmap", KMAP },
{ "\\kmod", KMOD },
{ "\\kxmod", KXMOD }
};
FileName const filename = libFileSearch("kbd", language, "kmap");
if (filename.empty())
return -1;
freeKeymap();
Lexer lex(kmapTags);
Lexer lex(kmapTags, K_LAST - 1);
lex.setFile(filename);
int const res = load(lex);

View File

@ -133,7 +133,7 @@ void GuiLog::updateContents()
bool GuiLog::initialiseParams(string const & data)
{
istringstream is(data);
Lexer lex;
Lexer lex(0,0);
lex.setStream(is);
string logtype, logfile;

View File

@ -379,10 +379,11 @@ void MenuDefinition::read(Lexer & lex)
md_floatlistinsert,
md_floatinsert,
md_pasterecent,
md_toolbars
md_toolbars,
md_last
};
struct LexerKeyword menutags[] = {
struct keyword_item menutags[md_last - 1] = {
{ "bookmarks", md_bookmarks },
{ "branches", md_branches },
{ "charstyles", md_charstyles },
@ -407,7 +408,7 @@ void MenuDefinition::read(Lexer & lex)
{ "viewformats", md_viewformats }
};
lex.pushTable(menutags);
lex.pushTable(menutags, md_last - 1);
if (lyxerr.debugging(Debug::PARSER))
lex.printTable(lyxerr);
@ -1273,8 +1274,8 @@ void Menus::Impl::macxMenuBarInit(GuiView * view, QMenuBar * qmb)
}
void Menus::Impl::expand(MenuDefinition const & frommenu,
MenuDefinition & tomenu, Buffer const * buf) const
void Menus::Impl::expand(MenuDefinition const & frommenu, MenuDefinition & tomenu,
Buffer const * buf) const
{
if (!tomenu.empty())
tomenu.clear();
@ -1392,25 +1393,23 @@ MenuDefinition & Menus::Impl::getMenu(QString const & name)
return (*it);
}
/////////////////////////////////////////////////////////////////////
//
// Menus
//
// Menus implementation
/////////////////////////////////////////////////////////////////////
Menus::Menus() : d(new Impl) {}
Menus::Menus(): d(new Impl) {}
void Menus::read(Lexer & lex)
{
enum Menutags {
md_menu,
md_menu = 1,
md_menubar,
md_endmenuset,
md_last
};
struct LexerKeyword menutags[] = {
struct keyword_item menutags[md_last - 1] = {
{ "end", md_endmenuset },
{ "menu", md_menu },
{ "menubar", md_menubar }
@ -1422,7 +1421,7 @@ void Menus::read(Lexer & lex)
<< lex.getString() << '\'' << endl;
}
lex.pushTable(menutags);
lex.pushTable(menutags, md_last - 1);
if (lyxerr.debugging(Debug::PARSER))
lex.printTable(lyxerr);

View File

@ -236,21 +236,21 @@ void TemplateManager::readTemplates(FileName const & path)
{
PathChanger p(path);
enum {
enum TemplateTags {
TM_PREAMBLEDEF = 1,
TM_PREAMBLEDEF_END,
TM_TEMPLATE,
TM_TEMPLATE_END
};
LexerKeyword templatetags[] = {
keyword_item templatetags[] = {
{ "preambledef", TM_PREAMBLEDEF },
{ "preambledefend", TM_PREAMBLEDEF_END },
{ "template", TM_TEMPLATE },
{ "templateend", TM_TEMPLATE_END }
};
Lexer lex(templatetags);
Lexer lex(templatetags, TM_TEMPLATE_END);
FileName const filename = libFileSearch("", "external_templates");
if (filename.empty() || !lex.setFile(filename)) {
@ -311,7 +311,7 @@ void add(vector<TransformID> & ids, string const & name)
void Template::readTemplate(Lexer & lex)
{
enum {
enum TemplateOptionTags {
TO_GUINAME = 1,
TO_HELPTEXT,
TO_INPUTFORMAT,
@ -322,7 +322,7 @@ void Template::readTemplate(Lexer & lex)
TO_END
};
LexerKeyword templateoptiontags[] = {
keyword_item templateoptiontags[] = {
{ "automaticproduction", TO_AUTOMATIC },
{ "filefilter", TO_FILTER },
{ "format", TO_FORMAT },
@ -480,7 +480,7 @@ void Template::Format::readFormat(Lexer & lex)
FO_END
};
LexerKeyword formattags[] = {
keyword_item formattags[] = {
{ "formatend", FO_END },
{ "option", FO_OPTION },
{ "preamble", FO_PREAMBLE },

View File

@ -523,7 +523,7 @@ void InsetBox::string2params(string const & in, InsetBoxParams & params)
return;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string name;

View File

@ -281,7 +281,7 @@ void InsetBranch::string2params(string const & in, InsetBranchParams & params)
return;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string name;

View File

@ -198,7 +198,7 @@ bool InsetCommand::string2params(string const & name, string const & in,
return false;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string n;

View File

@ -197,7 +197,7 @@ InsetCollapsable::CollapseStatus InsetERT::string2params(string const & in)
return status;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string name;

View File

@ -264,7 +264,7 @@ bool InsetExternalParams::read(Buffer const & buffer, Lexer & lex)
EX_END
};
LexerKeyword external_tags[] = {
keyword_item external_tags[] = {
{ "\\end_inset", EX_END },
{ "boundingBox", EX_BOUNDINGBOX },
{ "clip", EX_CLIP },
@ -883,7 +883,7 @@ void InsetExternal::string2params(string const & in, Buffer const & buffer,
return;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string name;

View File

@ -452,7 +452,7 @@ void InsetFloat::string2params(string const & in, InsetFloatParams & params)
return;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string name;

View File

@ -961,7 +961,7 @@ void InsetGraphics::string2params(string const & in, Buffer const & buffer,
return;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string name;

View File

@ -39,7 +39,7 @@ InsetLayout::InsetLayout() :
enum InsetLayoutTags {
IL_FONT,
IL_FONT = 1,
IL_BGCOLOR,
IL_DECORATION,
IL_FREESPACING,
@ -78,7 +78,7 @@ bool InsetLayout::read(Lexer & lexrc)
{
name_ = support::subst(lexrc.getDocString(), '_', ' ');
LexerKeyword elementTags[] = {
keyword_item elementTags[] = {
{ "bgcolor", IL_BGCOLOR },
{ "decoration", IL_DECORATION },
{ "end", IL_END },
@ -99,7 +99,7 @@ bool InsetLayout::read(Lexer & lexrc)
{ "requires", IL_REQUIRES }
};
lexrc.pushTable(elementTags);
lexrc.pushTable(elementTags, IL_END);
FontInfo font = inherit_font;
labelfont_ = inherit_font;

View File

@ -313,7 +313,7 @@ void InsetListings::string2params(string const & in,
if (in.empty())
return;
istringstream data(in);
Lexer lex;
Lexer lex(0, 0);
lex.setStream(data);
// discard "listings", which is only used to determine inset
lex.next();

View File

@ -269,7 +269,7 @@ void InsetNewline::string2params(string const & in, InsetNewlineParams & params)
return;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string name;

View File

@ -272,7 +272,7 @@ void InsetNewpage::string2params(string const & in, InsetNewpageParams & params)
return;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string name;

View File

@ -368,7 +368,7 @@ void InsetNote::string2params(string const & in, InsetNoteParams & params)
return;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string name;

View File

@ -530,7 +530,7 @@ void InsetSpace::string2params(string const & in, InsetSpaceParams & params)
return;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string name;

View File

@ -4840,7 +4840,7 @@ void InsetTabular::completionPosAndDim(Cursor const & cur, int & x, int & y,
void InsetTabular::string2params(string const & in, InsetTabular & inset)
{
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
if (in.empty())

View File

@ -255,7 +255,7 @@ void InsetVSpace::string2params(string const & in, VSpace & vspace)
return;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string name;

View File

@ -267,7 +267,7 @@ void InsetWrap::string2params(string const & in, InsetWrapParams & params)
return;
istringstream data(in);
Lexer lex;
Lexer lex(0,0);
lex.setStream(data);
string name;

View File

@ -378,7 +378,7 @@ private:
Parser::Parser(Lexer & lexer)
: lineno_(lexer.lineNumber()), pos_(0)
: lineno_(lexer.getLineNo()), pos_(0)
{
tokenize(lexer.getStream());
lexer.eatLine();