メインページ   名前空間一覧   クラス階層   構成   ファイル一覧   名前空間メンバ   構成メンバ   ファイルメンバ  

Tokenizer.h

解説を見る。
00001 // -*- mode: c++ -*-
00002 
00003 #ifndef MIX_TOKENIZER_H_
00004 #define MIX_TOKENIZER_H_
00005 
00006 
00007 #include "classes.h"
00008 #include "misc.h"
00009 #include "XMLToken.h"
00010 
00011 #include <stack>
00012 #include <string>
00013 
00014 namespace MiX{
00023   template <class charT,class traitsT>
00024   class Tokenizer{
00025   public:
00026     MiX_Template_Typedef(charT,traitsT);
00027     typedef Tokenizer<charT,traitsT> this_type;
00028     typedef XMLToken<charT,traitsT> token_type;
00029     typedef typename traitsT::xml_traits xml_traits;
00030     typedef typename traitsT::char_traits char_traits;
00031   private:
00032     const charT* data_;
00033     const charT* start_;
00034     const charT* current_;
00040     charT* line_;
00041     long len_;
00042     static const charT tokens_[15];
00043     std::stack<token_type> stack_;
00044     static TokenType isToken(charT);
00045 
00046     std::basic_istream<charT, char_traits>* is_;
00047 
00048     bool injectStringFromBuffer(const charT* text)
00049       { current_ = start_ = data_ = text; return true; }
00050 
00051     bool fillUpBuffer();
00052   public:
00054     Tokenizer() : is_(0),line_(0) { }
00056     ~Tokenizer(){ if(line_) delete line_; }
00058     bool injectString(const charT* text)
00059       { current_ = start_ = data_ = text; return true; }
00061     bool ejectToken(token_type& dest);
00063     void pushToken(const token_type& tok){
00064       stack_.push(tok);
00065     }
00066 
00067     bool injectStream(std::basic_istream<charT, char_traits>& is)
00068       { is_ = &is; fillUpBuffer(); }
00069   
00070   };
00071 
00072 }
00073 
00074 #ifndef MIX_TOKENIZER_CPP_
00075 #include "Tokenizer.cpp"
00076 #endif
00077 
00078 #endif

MiXに対してSat Jul 27 23:16:32 2002に生成されました。 doxygen1.2.14 作者 Dimitri van Heesch, © 1997-2002