]> git.lyx.org Git - lyx.git/blobdiff - src/tex2lyx/Parser.h
* doxy
[lyx.git] / src / tex2lyx / Parser.h
index 94c1100aae4f7dbda7550c7199ffe4c8907975bd..af4e030a29c268a4c2571219984ce44963327443 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,20 +73,16 @@ enum {
 class Token {
 public:
        ///
-       Token() : cs_(), char_(0), cat_(catIgnore) {}
-       ///
-       Token(char c, CatCode cat) : cs_(), char_(c), cat_(cat) {}
+       Token() : cs_(), cat_(catIgnore) {}
        ///
-       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) {}
 
-       ///
+       /// Returns the token as string
        std::string const & cs() const { return cs_; }
        /// Returns the catcode of the token
        CatCode cat() const { return cat_; }
        ///
-       char character() const { return char_; }
-       /// Returns the token as string
-       std::string asString() const;
+       char character() const { return cs_.empty() ? 0 : cs_[0]; }
        /// Returns the token verbatim
        std::string asInput() const;
 
@@ -96,8 +90,6 @@ private:
        ///
        std::string cs_;
        ///
-       char char_;
-       ///
        CatCode cat_;
 };
 
@@ -119,12 +111,17 @@ class Parser {
 
 public:
        ///
-       Parser(std::istream & is);
+       Parser(idocstream & is);
        ///
        Parser(std::string const & s);
        ///
        ~Parser();
 
+       /// change the latex encoding of the input stream
+       void setEncoding(std::string const & encoding);
+       /// get the current latex encoding of the input stream
+       std::string getEncoding() const { return encoding_latex_; }
+
        ///
        int lineno() const { return lineno_; }
        ///
@@ -159,9 +156,13 @@ public:
         */
        std::string getOpt();
        /*!
-        * \returns getFullArg('(', ')') including the parentheses or the
+        * \returns getFullArg('[', ']') including the parentheses or the
         * empty string if there is no such argument.
         */
+       std::string getOptContent();
+       /*!
+        * the same as getOpt but without the brackets
+        */
        std::string getFullParentheseArg();
        /*!
         * \returns the contents of the environment \p name.
@@ -181,13 +182,13 @@ public:
        ///
        void push_back(Token const & t);
        /// The previous token.
-       Token const prev_token() const;
+       Token const prev_token() const;
        /// The current token.
-       Token const curr_token() const;
+       Token const curr_token() const;
        /// The next token.
-       Token const next_token();
+       Token const next_token();
        /// Make the next token current and return that.
-       Token const get_token();
+       Token const get_token();
        /// \return whether the current token starts a new paragraph
        bool isParagraph();
        /// skips spaces (and comments if \p skip_comments is true)
@@ -217,9 +218,11 @@ private:
        ///
        unsigned pos_;
        ///
-       std::istringstream * iss_;
+       idocstringstream * iss_;
        ///
-       std::istream & is_;
+       idocstream & is_;
+       /// latex name of the current encoding
+       std::string encoding_latex_;
 };