]> git.lyx.org Git - lyx.git/blobdiff - src/lyxlex.C
fix typo that put too many include paths for most people
[lyx.git] / src / lyxlex.C
index 8fe4b94be4dbf6dd5459a35f1d32e643f6c3054d..118162bdc1b43c3e70f8f4a548f2f25080635d8c 100644 (file)
@@ -1,9 +1,9 @@
 /* This file is part of
- * ====================================================== 
- * 
+ * ======================================================
+ *
  *           LyX, The Document Processor
  *
- *           Copyright 1996-2000 The LyX Team.
+ *           Copyright 1996-2001 The LyX Team.
  *
  *   Generalized simple lexical analizer.
  *   It can be used for simple syntax parsers, like lyxrc,
@@ -19,7 +19,9 @@
 
 #include "lyxlex.h"
 #include "lyxlex_pimpl.h"
+#include "debug.h"
 #include "support/filetools.h"
+#include "support/lstrings.h"
 
 using std::ostream;
 using std::istream;
@@ -31,13 +33,13 @@ LyXLex::LyXLex(keyword_item * tab, int num)
 {}
 
 
-LyXLex::~LyXLex() 
+LyXLex::~LyXLex()
 {
        delete pimpl_;
 }
 
 
-bool LyXLex::IsOK() const
+bool LyXLex::isOK() const
 {
        return pimpl_->is.good();
 }
@@ -49,19 +51,19 @@ void LyXLex::setLineNo(int l)
 }
 
 
-int LyXLex::GetLineNo() const
+int LyXLex::getLineNo() const
 {
        return pimpl_->lineno;
 }
 
 
-char const * const LyXLex::text() const
+string const LyXLex::text() const
 {
        return &pimpl_->buff[0];
 }
 
 
-std::istream & LyXLex::getStream()
+istream & LyXLex::getStream()
 {
        return pimpl_->is;
 }
@@ -103,65 +105,74 @@ void LyXLex::setStream(istream & i)
 }
 
 
+void LyXLex::setCommentChar(char c)
+{
+       pimpl_->setCommentChar(c);
+}
+
 int LyXLex::lex()
 {
        return pimpl_->lex();
 }
 
 
-int LyXLex::GetInteger() const
+int LyXLex::getInteger() const
 {
-       if (pimpl_->buff[0] > ' ')   
-               return atoi(pimpl_->buff);
-       else {
+       if (isStrInt(pimpl_->getString())) {
+               return strToInt(pimpl_->getString());
+       else {
                pimpl_->printError("Bad integer `$$Token'");
                return -1;
        }
 }
 
 
-float LyXLex::GetFloat() 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 const LyXLex::GetString() const
+string const LyXLex::getString() const
 {
-       return pimpl_->GetString();
+       return pimpl_->getString();
 }
 
 
 // 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) 
+// explicit tokens (JMarc)
 string const LyXLex::getLongString(string const & endtoken)
 {
        string str, prefix;
        bool firstline = true;
 
-       while (IsOK()) {
-               if (!EatLine())
+       while (isOK()) {
+               if (!eatLine())
                        // blank line in the file being read
                        continue;
-               
-               string const token = frontStrip(strip(GetString()), " \t");
-               
+
+               string const token = frontStrip(strip(getString()), " \t");
+
                lyxerr[Debug::PARSER] << "LongString: `"
-                                     << GetString() << '\'' << endl;
+                                     << getString() << '\'' << endl;
 
                // We do a case independent comparison, like search_kw
                // does.
-                if (compare_no_case(token, endtoken) != 0) {
-                       string tmpstr = GetString();
+               if (compare_no_case(token, endtoken) != 0) {
+                       string tmpstr = getString();
                        if (firstline) {
                                unsigned int i = 0;
-                               while(i < tmpstr.length()
+                               while (i < tmpstr.length()
                                      && tmpstr[i] == ' ') {
                                        ++i;
                                        prefix += ' ';
@@ -169,37 +180,39 @@ string const LyXLex::getLongString(string const & endtoken)
                                firstline = false;
                                lyxerr[Debug::PARSER] << "Prefix = `" << prefix
                                                      << '\'' << endl;
-                       } 
+                       }
 
-                       if (!prefix.empty() 
-                           && prefixIs(tmpstr, prefix.c_str())) {
+                       if (!prefix.empty()
+                           && prefixIs(tmpstr, prefix)) {
                                tmpstr.erase(0, prefix.length() - 1);
                        }
                        str += frontStrip(tmpstr, "\t") + '\n';
-                }
+               }
                else // token == endtoken
                        break;
        }
-       if (!IsOK())
+       if (!isOK()) {
                printError("Long string not ended by `" + endtoken + '\'');
+       }
 
        return str;
 }
 
 
-bool LyXLex::GetBool() const
+bool LyXLex::getBool() const
 {
-       if (compare(pimpl_->buff, "true") == 0)
+       if (compare(pimpl_->buff, "true") == 0) {
                return true;
-       else if (compare(pimpl_->buff, "false") != 0)
+       } else if (compare(pimpl_->buff, "false") != 0) {
                pimpl_->printError("Bad boolean `$$Token'. Use \"false\" or \"true\"");
+       }
        return false;
 }
 
 
-bool LyXLex::EatLine()
+bool LyXLex::eatLine()
 {
-       return pimpl_->EatLine();
+       return pimpl_->eatLine();
 }
 
 
@@ -221,35 +234,23 @@ void LyXLex::pushToken(string const & pt)
 }
 
 
-int LyXLex::FindToken(char const * str[])
-{  
-   int i = -1;
-   
-   if (next()) {
-      if (compare(pimpl_->buff, "default")) {
-        for (i = 0; str[i][0] && compare(str[i], pimpl_->buff); ++i);
-        if (!str[i][0]) {
-           pimpl_->printError("Unknown argument `$$Token'");
-           i = -1;
-        }
-      }  
-   } else
-     pimpl_->printError("file ended while scanning string token");
-   return i;
-}
-
-
-int LyXLex::CheckToken(char const * str[], int print_error)
-{  
-   int i = -1;
-   
-   if (compare(pimpl_->buff, "default")) {
-       for (i = 0; str[i][0] && compare(str[i], pimpl_->buff); ++i);
-       if (!str[i][0]) {
-           if (print_error)
-               pimpl_->printError("Unknown argument `$$Token'");
-           i = -1;
-       }
-   }
-   return i;
+int LyXLex::findToken(char const * str[])
+{
+       int i = 0;
+
+       if (next()) {
+               if (compare(pimpl_->buff, "default")) {
+                       while (str[i][0] && compare(str[i], pimpl_->buff)) {
+                               ++i;
+                       }
+                       if (!str[i][0]) {
+                               pimpl_->printError("Unknown argument `$$Token'");
+                               i = -1;
+                       }
+               }
+       } else {
+               pimpl_->printError("file ended while scanning string token");
+               i = -1;
+       }
+       return i;
 }