File: decoder.h

package info (click to toggle)
kdevelop-pg-qt 2.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 6,284 kB
  • sloc: cpp: 22,743; lex: 928; ansic: 716; yacc: 615; ruby: 68; sh: 14; lisp: 10; fortran: 6; makefile: 2
file content (41 lines) | stat: -rw-r--r-- 825 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#ifndef COOL_DECODER_H
#define COOL_DECODER_H

#include "coolparser.h"

#include <string>
#include <cstdlib>

namespace cool
{

class decoder
{
  KDevPG::TokenStream *_M_token_stream;
  Parser * p;
public:
  decoder(KDevPG::TokenStream *token_stream, Parser * parser)
    : _M_token_stream(token_stream), p(parser) {}

  int decode_op(std::size_t index) const
  {
    Parser::Token const &tk = _M_token_stream->at(index);
    return tk.kind;
  }

  QString decode_id(std::size_t index) const
  {
    Parser::Token const &tk = _M_token_stream->at(index);
    return p->tokenText(tk.begin,tk.end);
  }

  long decode_number(std::size_t index) const
  {
    Parser::Token const &tk = _M_token_stream->at(index);
    return p->tokenText(tk.begin,tk.end).toLong();    
  }
};

} // end of namespace cool

#endif // COOL_DECODER_H