X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxlex.C;h=4b93787423c7685d12ba833372bd9cd52e37b25c;hb=4789208ca1bcaeff22d05fa942656fbfc3fe8434;hp=8fe4b94be4dbf6dd5459a35f1d32e643f6c3054d;hpb=eeaae9c35568b8852210420c727068a872ba3071;p=lyx.git diff --git a/src/lyxlex.C b/src/lyxlex.C index 8fe4b94be4..4b93787423 100644 --- a/src/lyxlex.C +++ b/src/lyxlex.C @@ -20,6 +20,7 @@ #include "lyxlex.h" #include "lyxlex_pimpl.h" #include "support/filetools.h" +#include "support/lstrings.h" using std::ostream; using std::istream; @@ -55,7 +56,7 @@ int LyXLex::GetLineNo() const } -char const * const LyXLex::text() const +string const LyXLex::text() const { return &pimpl_->buff[0]; } @@ -103,6 +104,11 @@ void LyXLex::setStream(istream & i) } +void LyXLex::setCommentChar(char c) +{ + pimpl_->setCommentChar(c); +} + int LyXLex::lex() { return pimpl_->lex(); @@ -111,8 +117,8 @@ int LyXLex::lex() int LyXLex::GetInteger() const { - if (pimpl_->buff[0] > ' ') - return atoi(pimpl_->buff); + if (isStrInt(pimpl_->GetString())) + return strToInt(pimpl_->GetString()); else { pimpl_->printError("Bad integer `$$Token'"); return -1; @@ -122,12 +128,16 @@ int LyXLex::GetInteger() const float LyXLex::GetFloat() const { - if (pimpl_->buff[0] > ' ') - return atof(pimpl_->buff); - else { - pimpl_->printError("Bad float `$$Token'"); - return -1; - } + // replace comma with dot in case the file was written with + // the wrong locale (should be rare, but is easy enough to + // avoid). + string str = subst(pimpl_->GetString(), ",", "."); + if (isStrDbl(str)) + return strToDbl(str); + else { + pimpl_->printError("Bad float `$$Token'"); + return -1; + } } @@ -172,7 +182,7 @@ string const LyXLex::getLongString(string const & endtoken) } if (!prefix.empty() - && prefixIs(tmpstr, prefix.c_str())) { + && prefixIs(tmpstr, prefix)) { tmpstr.erase(0, prefix.length() - 1); } str += frontStrip(tmpstr, "\t") + '\n';