X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLexer.cpp;h=c290260144aa8b740c37de3a9dfbd0ab92d28608;hb=294e4884ee29585d311177406cd31499e6d81877;hp=78bf9f49c23394c86c265eabbadebd911d349b67;hpb=1f945177b9628b213c60872df88f2d155c3d6c54;p=lyx.git diff --git a/src/Lexer.cpp b/src/Lexer.cpp index 78bf9f49c2..c290260144 100644 --- a/src/Lexer.cpp +++ b/src/Lexer.cpp @@ -102,10 +102,10 @@ public: int lineno; /// string pushTok; - /// - char commentChar; /// used for error messages string context; + /// + char commentChar; private: /// non-copyable Pimpl(Pimpl const &); @@ -118,7 +118,7 @@ private: public: /// PushedTable() - : table_elem(0), table_siz(0) {} + : table_elem(nullptr), table_siz(0) {} /// PushedTable(LexerKeyword * ki, int siz) : table_elem(ki), table_siz(siz) {} @@ -132,23 +132,19 @@ private: }; - namespace { -class CompareTags - : public binary_function { -public: - // used by lower_bound, sort and sorted - bool operator()(LexerKeyword const & a, LexerKeyword const & b) const - { - // we use the ascii version, because in turkish, 'i' - // is not the lowercase version of 'I', and thus - // turkish locale breaks parsing of tags. - return compare_ascii_no_case(a.tag, b.tag) < 0; - } -}; +// used by lower_bound, sort and sorted +bool compareTags(LexerKeyword const & a, LexerKeyword const & b) +{ + // we use the ascii version, because in turkish, 'i' + // is not the lowercase version of 'I', and thus + // turkish locale breaks parsing of tags. + return compare_ascii_no_case(a.tag, b.tag) < 0; +} + +} // namespace -} // end of anon namespace Lexer::Pimpl::Pimpl(LexerKeyword * tab, int num) @@ -196,14 +192,14 @@ void Lexer::Pimpl::verifyTable() { // Check if the table is sorted and if not, sort it. if (table - && !lyx::sorted(table, table + no_items, CompareTags())) { + && !lyx::sorted(table, table + no_items, &compareTags)) { lyxerr << "The table passed to Lexer is not sorted!\n" << "Tell the developers to fix it!" << endl; // We sort it anyway to avoid problems. lyxerr << "\nUnsorted:" << endl; printTable(lyxerr); - sort(table, table + no_items, CompareTags()); + sort(table, table + no_items, &compareTags); lyxerr << "\nSorted:" << endl; printTable(lyxerr); } @@ -239,7 +235,7 @@ void Lexer::Pimpl::popTable() bool Lexer::Pimpl::setFile(FileName const & filename) { // Check the format of the file. - if (formats.isZippedFile(filename)) { + if (theFormats().isZippedFile(filename)) { LYXERR(Debug::LYXLEX, "lyxlex: compressed"); // The check only outputs a debug message, because it triggers // a bug in compaq cxx 6.2, where is_open() returns 'true' for @@ -440,7 +436,7 @@ int Lexer::Pimpl::searchKeyword(char const * const tag) const LexerKeyword search_tag = { tag, 0 }; LexerKeyword * res = lower_bound(table, table + no_items, - search_tag, CompareTags()); + search_tag, &compareTags); // use the compare_ascii_no_case instead of compare_no_case, // because in turkish, 'i' is not the lowercase version of 'I', // and thus turkish locale breaks parsing of tags. @@ -567,7 +563,7 @@ void Lexer::Pimpl::pushToken(string const & pt) ////////////////////////////////////////////////////////////////////// Lexer::Lexer() - : pimpl_(new Pimpl(0, 0)), lastReadOk_(false) + : pimpl_(new Pimpl(nullptr, 0)), lastReadOk_(false) {} @@ -738,7 +734,7 @@ docstring Lexer::getLongString(docstring const & endtoken) break; if (firstline) { - size_t i = tmpstr.find_first_not_of(char_type(' ')); + size_t i = tmpstr.find_first_not_of(from_ascii(" \t")); if (i != string::npos) prefix = tmpstr.substr(0, i); firstline = false; @@ -747,10 +743,10 @@ docstring Lexer::getLongString(docstring const & endtoken) // further lines in long strings may have the same // whitespace prefix as the first line. Remove it. - if (prefix.length() && prefixIs(tmpstr, prefix)) - tmpstr.erase(0, prefix.length() - 1); + if (!prefix.empty() && prefixIs(tmpstr, prefix)) + tmpstr.erase(0, prefix.length()); - str += ltrim(tmpstr, "\t") + '\n'; + str += tmpstr + '\n'; } if (!pimpl_->is) @@ -762,7 +758,7 @@ docstring Lexer::getLongString(docstring const & endtoken) bool Lexer::getBool() const { - string const s = pimpl_->getString(); + string const s = pimpl_->getString(); if (s == "false" || s == "0") { lastReadOk_ = true; return false; @@ -808,7 +804,7 @@ Lexer::operator void const *() const // use fail() here. However, our implementation of getString() et al. // can cause the eof() and fail() bits to be set, even though we // haven't tried to read 'em. - return lastReadOk_? this : 0; + return lastReadOk_? this : nullptr; } @@ -917,7 +913,7 @@ docstring Lexer::quoteString(docstring const & arg) { docstring res; res += '"'; - res += subst(subst(arg, from_ascii("\\"), from_ascii("\\\\")), + res += subst(subst(arg, from_ascii("\\"), from_ascii("\\\\")), from_ascii("\""), from_ascii("\\\"")); res += '"'; return res; @@ -929,7 +925,7 @@ Lexer & Lexer::operator>>(char const * required) string token; *this >> token; if (token != required) { - LYXERR0("Missing '" << required << "'-tag in " << pimpl_->context + LYXERR0("Missing '" << required << "'-tag in " << pimpl_->context << ". Got " << token << " instead. Line: " << lineNumber()); pushToken(token); }