X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxlex.C;h=517bad5e00c492d9e7ca3ab632372edd2a7dc50c;hb=a858be7332e331e0244e4dba7b0931b6072ffd3d;hp=213abecfbfb038cce4b6eb97363f3e545f1a68ff;hpb=27de1486ca34aaad446adb798d71a77d6f6304da;p=lyx.git diff --git a/src/lyxlex.C b/src/lyxlex.C index 213abecfbf..517bad5e00 100644 --- a/src/lyxlex.C +++ b/src/lyxlex.C @@ -5,39 +5,30 @@ // (C) 1996 Lyx Team. #include -//#include "definitions.h" -#include -#include +#include #ifdef __GNUG__ #pragma implementation "lyxlex.h" #endif #include "lyxlex.h" -#include "error.h" -#include "filetools.h" +#include "debug.h" +#include "support/filetools.h" -// $Id: lyxlex.C,v 1.1 1999/09/27 18:44:37 larsbj Exp $ - -#if !defined(lint) && !defined(WITH_WARNINGS) -static char vcid[] = "$Id: lyxlex.C,v 1.1 1999/09/27 18:44:37 larsbj Exp $"; -#endif /* lint */ - - -LyXLex::LyXLex(keyword_item* tab, int num) +LyXLex::LyXLex(keyword_item * tab, int num) : table(tab), no_items(num) { - file = NULL; + file = 0; owns_file = false; status = 0; - pushed = NULL; + pushed = 0; } -void LyXLex::pushTable(keyword_item* tab, int num) +void LyXLex::pushTable(keyword_item * tab, int num) { - pushed_table *tmppu = new pushed_table; + pushed_table * tmppu = new pushed_table; tmppu->next = pushed; tmppu->table_elem = table; tmppu->table_siz = no_items; @@ -49,14 +40,14 @@ void LyXLex::pushTable(keyword_item* tab, int num) void LyXLex::popTable() { - if (pushed == NULL) - lyxerr.print("LyXLex error: nothing to pop!"); + if (pushed == 0) + lyxerr << "LyXLex error: nothing to pop!" << endl; - pushed_table *tmp; + pushed_table * tmp; tmp = pushed; table = tmp->table_elem; no_items = tmp->table_siz; - tmp->table_elem = NULL; + tmp->table_elem = 0; pushed = tmp->next; delete tmp; } @@ -64,28 +55,27 @@ void LyXLex::popTable() void LyXLex::printTable() { - lyxerr.print(LString("\nNumber of tags: ")+no_items); + lyxerr << "\nNumber of tags: " << no_items << endl; for(int i=0; i' ') - return (float)strtod(buff, (char**)NULL); + return (float)strtod(buff, (char**)0); else { printError("Bad float `$$Token'"); return -1; @@ -136,18 +126,18 @@ float LyXLex::GetFloat() } -LString LyXLex::GetString() const +string LyXLex::GetString() const { - return LString(buff); + return string(buff); } // I would prefer to give a tag number instead of an explicit token // here, but it is not possible because Buffer::readLyXformat2 uses // explicit tokens (JMarc) -LString LyXLex::getLongString(LString const &endtoken) +string LyXLex::getLongString(string const & endtoken) { - LString str, prefix; + string str, prefix; bool firstline = true; while (IsOK()) { @@ -155,30 +145,30 @@ LString LyXLex::getLongString(LString const &endtoken) // blank line in the file being read continue; - LString const token = GetString().strip().frontStrip(); + string const token = frontStrip(strip(GetString()), " \t"); - lyxerr.debug("LongString: `"+GetString()+'\'', Error::LEX_PARSER); + lyxerr[Debug::PARSER] << "LongString: `" + << GetString() << '\'' << endl; // We do a case independent comparison, like search_kw // does. - if (strcasecmp(token.c_str(), endtoken.c_str()) != 0) { - LString tmpstr = GetString(); + if (compare_no_case(token, endtoken) != 0) { + string tmpstr = GetString(); if (firstline) { - int i = 0; + unsigned int i = 0; while(i < tmpstr.length() && tmpstr[i] == ' ') { - i++; + ++i; prefix += ' '; } firstline = false; - lyxerr.debug("Prefix = `"+prefix+'\'', - Error::LEX_PARSER); + lyxerr[Debug::PARSER] << "Prefix = `" << prefix + << '\'' << endl; } if (!prefix.empty() - && tmpstr.prefixIs(prefix.c_str())) { - tmpstr.substring(prefix.length(), - tmpstr.length()-1); + && prefixIs(tmpstr, prefix.c_str())) { + tmpstr.erase(0, prefix.length() - 1); } str += tmpstr + '\n'; } @@ -194,9 +184,9 @@ LString LyXLex::getLongString(LString const &endtoken) bool LyXLex::GetBool() { - if (strcmp(buff, "true") == 0) + if (compare(buff, "true") == 0) return true; - else if (strcmp(buff, "false") != 0) + else if (compare(buff, "false") != 0) printError("Bad boolean `$$Token'. Use \"false\" or \"true\""); return false; } @@ -215,11 +205,11 @@ bool LyXLex::EatLine() if (i==(LEX_MAX_BUFF-1) && c !='\n') { printError("Line too long"); c = '\n'; // Pretend we had an end of line - lineno--; // but don't increase line counter (netto effect) - i++; // and preserve last character read. + --lineno; // but don't increase line counter (netto effect) + ++i; // and preserve last character read. } if (c=='\n') { - lineno++; + ++lineno; buff[--i] = '\0'; // i can never be 0 here, so no danger status = LEX_DATA; return true; @@ -237,19 +227,15 @@ int LyXLex::search_kw(char const * const tag) const while (l < r) { m = (l+r)/2; - if (lyxerr.debugging(Error::LEX_PARSER)) { - LString my_l; - my_l+="LyXLex::search_kw: elem " ; - my_l+= m; - my_l+=" tag "; - my_l+=table[m].tag; - my_l+=" search tag "; - my_l+= tag; - lyxerr.print(my_l); + if (lyxerr.debugging(Debug::PARSER)) { + lyxerr << "LyXLex::search_kw: elem " << m + << " tag " << table[m].tag + << " search tag " << tag + << endl; } if (table[m].tag) - k = strcasecmp(table[m].tag, tag); + k = compare_no_case(table[m].tag, tag); if (k==0) return table[m].code; else @@ -264,7 +250,7 @@ bool LyXLex::next(bool esc) if (!esc) { int c; // getc() returns an int - int i; + //int i; status = 0; @@ -273,12 +259,12 @@ bool LyXLex::next(bool esc) if (c=='#') { // Read rest of line (fast :-) fgets(buff, sizeof(buff), file); - lineno++; + ++lineno; continue; } if (c=='\"') { - i = -1; + int i = -1; do { c = getc(file); if (c != '\r') @@ -289,13 +275,13 @@ bool LyXLex::next(bool esc) if (i==(LEX_MAX_BUFF-2)) { printError("Line too long"); c = '\"'; // Pretend we got a " - i++; + ++i; } if (c!='\"') { printError("Missing quote"); if (c=='\n') - lineno++; + ++lineno; } buff[i] = '\0'; @@ -307,7 +293,7 @@ bool LyXLex::next(bool esc) continue; /* Skip ','s */ if (c > ' ' && !feof(file)) { - i = 0; + int i = 0; do { buff[i++] = c; c = getc(file); @@ -320,7 +306,7 @@ bool LyXLex::next(bool esc) status = LEX_TOKEN; } - if (c=='\r' && !feof(file)) { + if (c== '\r' && !feof(file)) { // The Windows support has lead to the // possibility of "\r\n" at the end of // a line. This will stop LyX choking @@ -329,7 +315,7 @@ bool LyXLex::next(bool esc) } if (c=='\n') - lineno++; + ++lineno; } if (status) return true; @@ -339,7 +325,7 @@ bool LyXLex::next(bool esc) return false; } else { int c; // getc() returns an int - int i; + //int i; status = 0; @@ -351,7 +337,7 @@ bool LyXLex::next(bool esc) if (c=='\\') { // escape - i = 0; + int i = 0; do { if (c == '\\') { // escape the next char @@ -372,13 +358,13 @@ bool LyXLex::next(bool esc) if (c=='#') { // Read rest of line (fast :-) fgets(buff, sizeof(buff), file); - lineno++; + ++lineno; continue; } // string if (c=='\"') { - i = -1; + int i = -1; bool escaped = false; do { escaped = false; @@ -398,13 +384,13 @@ bool LyXLex::next(bool esc) if (i==(LEX_MAX_BUFF-2)) { printError("Line too long"); c = '\"'; // Pretend we got a " - i++; + ++i; } if (c!='\"') { printError("Missing quote"); if (c=='\n') - lineno++; + ++lineno; } buff[i] = '\0'; @@ -413,7 +399,7 @@ bool LyXLex::next(bool esc) } if (c > ' ' && !feof(file)) { - i = 0; + int i = 0; do { if (c == '\\') { // escape the next char @@ -433,7 +419,7 @@ bool LyXLex::next(bool esc) // new line if (c=='\n') - lineno++; + ++lineno; } if (status) return true; @@ -480,7 +466,7 @@ bool LyXLex::nextToken() } if (c=='\n') - lineno++; + ++lineno; } if (status) return true; @@ -491,14 +477,14 @@ bool LyXLex::nextToken() } -int LyXLex::FindToken(char const* string[]) +int LyXLex::FindToken(char const * str[]) { int i = -1; if (next()) { - if (strcmp(buff, "default")) { - for (i=0; string[i][0] && strcmp(string[i], buff); i++); - if (!string[i][0]) { + if (compare(buff, "default")) { + for (i = 0; str[i][0] && compare(str[i], buff); ++i); + if (!str[i][0]) { printError("Unknown argument `$$Token'"); i = -1; } @@ -509,13 +495,13 @@ int LyXLex::FindToken(char const* string[]) } -int LyXLex::CheckToken(char const* string[], int print_error) +int LyXLex::CheckToken(char const * str[], int print_error) { int i = -1; - if (strcmp(buff, "default")) { - for (i=0; string[i][0] && strcmp(string[i], buff); i++); - if (!string[i][0]) { + if (compare(buff, "default")) { + for (i = 0; str[i][0] && compare(str[i], buff); i++); + if (!str[i][0]) { if (print_error) printError("Unknown argument `$$Token'"); i = -1;