]> git.lyx.org Git - lyx.git/blobdiff - src/lyxlex.C
fix compilation pb ; update eu.po
[lyx.git] / src / lyxlex.C
index 64273bf89b146c35c55a9143a07b553add34f64f..4b93787423c7685d12ba833372bd9cd52e37b25c 100644 (file)
@@ -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;
@@ -54,7 +55,8 @@ int LyXLex::GetLineNo() const
        return pimpl_->lineno;
 }
 
-char const * LyXLex::text() const
+
+string const LyXLex::text() const
 {
        return &pimpl_->buff[0];
 }
@@ -102,6 +104,11 @@ void LyXLex::setStream(istream & i)
 }
 
 
+void LyXLex::setCommentChar(char c)
+{
+       pimpl_->setCommentChar(c);
+}
+
 int LyXLex::lex()
 {
        return pimpl_->lex();
@@ -110,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;
@@ -121,16 +128,20 @@ 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;
+       }
 }
 
 
-string LyXLex::GetString() const
+string const LyXLex::GetString() const
 {
        return pimpl_->GetString();
 }
@@ -139,7 +150,7 @@ string LyXLex::GetString() const
 // 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) 
-string LyXLex::getLongString(string const & endtoken)
+string const LyXLex::getLongString(string const & endtoken)
 {
        string str, prefix;
        bool firstline = true;
@@ -171,7 +182,7 @@ string 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';