X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLexer.cpp;h=c290260144aa8b740c37de3a9dfbd0ab92d28608;hb=89d9334e03c311a4a7585f40ad81880304d174d4;hp=becd157886cd3d1952469e741a02ff810bfc996c;hpb=e30f3d76d2bee0011ceaeb5f0cc221156458cbad;p=lyx.git diff --git a/src/Lexer.cpp b/src/Lexer.cpp index becd157886..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,25 +132,21 @@ 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 + Lexer::Pimpl::Pimpl(LexerKeyword * tab, int num) : is(&fb_), table(tab), no_items(num), status(0), lineno(0), commentChar('#') @@ -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); } @@ -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) @@ -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; }