X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLexer.cpp;h=17cc161d19ccab690f571c75b288fa9be9e5de45;hb=19f5aa58aa55fe210c689052967ade0f943f82fb;hp=9cb5452ea9fa383cfea108b5179edc5451da0145;hpb=75bfed55079cab6b73fbea6ce4ae3f10d1af3b91;p=lyx.git diff --git a/src/Lexer.cpp b/src/Lexer.cpp index 9cb5452ea9..17cc161d19 100644 --- a/src/Lexer.cpp +++ b/src/Lexer.cpp @@ -24,9 +24,10 @@ #include "support/lassert.h" #include "support/lstrings.h" #include "support/lyxalgo.h" -#include "support/types.h" +#include // sort, lower_bound #include +#include #include #include #include @@ -102,10 +103,10 @@ public: int lineno; /// string pushTok; - /// - char commentChar; /// used for error messages string context; + /// + char commentChar; private: /// non-copyable Pimpl(Pimpl const &); @@ -118,7 +119,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 +133,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 +193,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 +437,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 +564,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 +735,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 +744,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 +805,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; } @@ -948,9 +945,9 @@ bool Lexer::checkFor(char const * required) } -void Lexer::setContext(std::string const & str) +void Lexer::setContext(std::string const & functionName) { - pimpl_->context = str; + pimpl_->context = functionName; }