File indexing completed on 2024-05-05 04:37:08

0001 #ifndef COOL_DECODER_H
0002 #define COOL_DECODER_H
0003 
0004 #include "coolparser.h"
0005 
0006 #include <string>
0007 #include <cstdlib>
0008 
0009 namespace cool
0010 {
0011 
0012 class decoder
0013 {
0014   KDevPG::TokenStream *_M_token_stream;
0015   Parser * p;
0016 public:
0017   decoder(KDevPG::TokenStream *token_stream, Parser * parser)
0018     : _M_token_stream(token_stream), p(parser) {}
0019 
0020   int decode_op(std::size_t index) const
0021   {
0022     Parser::Token const &tk = _M_token_stream->at(index);
0023     return tk.kind;
0024   }
0025 
0026   QString decode_id(std::size_t index) const
0027   {
0028     Parser::Token const &tk = _M_token_stream->at(index);
0029     return p->tokenText(tk.begin,tk.end);
0030   }
0031 
0032   long decode_number(std::size_t index) const
0033   {
0034     Parser::Token const &tk = _M_token_stream->at(index);
0035     return p->tokenText(tk.begin,tk.end).toLong();    
0036   }
0037 };
0038 
0039 } // end of namespace cool
0040 
0041 #endif // COOL_DECODER_H