]> git.lyx.org Git - lyx.git/blobdiff - src/tex2lyx/Parser.h
Now tex2lyx is able to set the encoding from what it reads in the preamble.
[lyx.git] / src / tex2lyx / Parser.h
index 436046d560cbd4c7b7aee07e2b1bb2ba6f2fe430..11af29b6667e312234195b8879aa26154488213a 100644 (file)
 #ifndef PARSER_H
 #define PARSER_H
 
-#include <vector>
 #include <string>
 #include <utility>
+#include <vector>
 
+#include "support/docstream.h"
 
 namespace lyx {
 
@@ -46,9 +47,6 @@ enum CatCode {
 };
 
 
-CatCode catcode(unsigned char c);
-
-
 enum {
        FLAG_BRACE_LAST = 1 << 1,  //  last closing brace ends the parsing
        FLAG_RIGHT      = 1 << 2,  //  next \\right ends the parsing process
@@ -75,18 +73,16 @@ enum {
 class Token {
 public:
        ///
-       Token() : cs_(), char_(0), cat_(catIgnore) {}
+       Token() : cs_(), cat_(catIgnore) {}
        ///
-       Token(char c, CatCode cat) : cs_(), char_(c), cat_(cat) {}
-       ///
-       Token(std::string const & cs, CatCode cat) : cs_(cs), char_(0), cat_(cat) {}
+       Token(docstring const & cs, CatCode cat) : cs_(to_utf8(cs)), cat_(cat) {}
 
        ///
        std::string const & cs() const { return cs_; }
        /// Returns the catcode of the token
        CatCode cat() const { return cat_; }
        ///
-       char character() const { return char_; }
+       char character() const { return cs_.empty() ? 0 : cs_[0]; }
        /// Returns the token as string
        std::string asString() const;
        /// Returns the token verbatim
@@ -96,8 +92,6 @@ private:
        ///
        std::string cs_;
        ///
-       char char_;
-       ///
        CatCode cat_;
 };
 
@@ -119,12 +113,15 @@ class Parser {
 
 public:
        ///
-       Parser(std::istream & is);
+       Parser(idocstream & is);
        ///
        Parser(std::string const & s);
        ///
        ~Parser();
 
+       /// change the encoding of the input stream
+       void setEncoding(std::string const & encoding);
+
        ///
        int lineno() const { return lineno_; }
        ///
@@ -177,9 +174,7 @@ public:
        ///
        void error(std::string const & msg);
        /// Parses one token from \p is 
-       void tokenize_one(std::istream & is);
-       /// Parses \p is into tokens
-       void tokenize(std::istream & is);
+       void tokenize_one();
        ///
        void push_back(Token const & t);
        /// The previous token.
@@ -187,11 +182,11 @@ public:
        /// The current token.
        Token const & curr_token() const;
        /// The next token.
-       Token const & next_token() const;
+       Token const & next_token();
        /// Make the next token current and return that.
        Token const & get_token();
        /// \return whether the current token starts a new paragraph
-       bool isParagraph() const;
+       bool isParagraph();
        /// skips spaces (and comments if \p skip_comments is true)
        void skip_spaces(bool skip_comments = false);
        /// puts back spaces (and comments if \p skip_comments is true)
@@ -199,7 +194,7 @@ public:
        ///
        void lex(std::string const & s);
        ///
-       bool good() const;
+       bool good();
        ///
        std::string verbatim_item();
        ///
@@ -219,9 +214,9 @@ private:
        ///
        unsigned pos_;
        ///
-       std::istringstream * iss_;
+       idocstringstream * iss_;
        ///
-       std::istream & is_;
+       idocstream & is_;
 };