]> git.lyx.org Git - lyx.git/blobdiff - src/lyxlex_pimpl.h
fix typo that put too many include paths for most people
[lyx.git] / src / lyxlex_pimpl.h
index 2991328f79c46f42f0ce15d03c1789ee28e52a0f..1f63abc1115d7fcaa4e93306eb16c7a54e78fce4 100644 (file)
@@ -4,6 +4,8 @@
 #define LYXLEX_PIMPL_H
 
 #include <fstream>
+#include <stack>
+#include <boost/utility.hpp>
 
 #include "lyxlex.h"
 
 #endif
 
 ///
-struct LyXLex::Pimpl {
+struct LyXLex::Pimpl : boost::noncopyable {
        ///
        enum {
                ///
                LEX_MAX_BUFF = 2048
        };
-       
+
        ///
-       struct pushed_table {
-               ///
-               pushed_table(){
-                       next = 0;
-                       table_elem = 0;
-               }
-               ///
-               pushed_table * next;
-               ///
-               keyword_item * table_elem;
-               ///
-               int table_siz;
-       };
-       
        Pimpl(keyword_item * tab, int num);
-       
-       string GetString() const;
-       
+       ///
+       string const getString() const;
+       ///
        void printError(string const & message) const;
-       
+       ///
        void printTable(std::ostream & os);
-       
+       ///
        void pushTable(keyword_item * tab, int num);
-       
+       ///
        void popTable();
-       
+       ///
        bool setFile(string const & filename);
-       
+       ///
        void setStream(std::istream & i);
-       
+       ///
+       void setCommentChar(char c);
+       ///
        bool next(bool esc = false);
-       
        ///
        int search_kw(char const * const tag) const;
-       
+       ///
        int lex();
-       
-       bool EatLine();
-       
+       ///
+       bool eatLine();
+       ///
        bool nextToken();
-       
+       ///
        void pushToken(string const &);
-
        /// fb__ is only used to open files, the stream is accessed through is
        std::filebuf fb__;
        /// the stream that we use.
        std::istream is;
-       /// 
+       ///
        string name;
        ///
        keyword_item * table;
@@ -76,12 +64,30 @@ struct LyXLex::Pimpl {
        ///
        char buff[LEX_MAX_BUFF];
        ///
-       short status;
-       ///
-       pushed_table * pushed;
+       int status;
        ///
        int lineno;
        ///
        string pushTok;
+       ///
+       char commentChar;
+private:
+       ///
+       void verifyTable();
+       ///
+       struct pushed_table {
+               ///
+               pushed_table()
+                       : table_elem(0), table_siz(0) {}
+               ///
+               pushed_table(keyword_item * ki, int siz)
+                       : table_elem(ki), table_siz(siz) {}
+               ///
+               keyword_item * table_elem;
+               ///
+               int table_siz;
+       };
+       ///
+       std::stack<pushed_table> pushed;
 };
 #endif