Sirikata
liboh/plugins/js/emerson/EmersonInfo.h
Go to the documentation of this file.
00001 #ifndef _EMERSON_INFO_
00002 #define _EMERSON_INFO_
00003 
00004 #include <antlr3.h>
00005 #include <string>
00006 #include <stack>
00007 #include "EmersonPlatform.hpp"
00008 
00009 class FileInfo
00010 {
00011   std::string _fileName;
00012   Emerson::uint32 _line;
00013   Emerson::uint32 _charPos;
00014 
00015   public:
00016   FileInfo(){}
00017   FileInfo(std::string fileName_, Emerson::uint32 line_, Emerson::uint32 charPos_):_fileName(fileName_), _line(line_), _charPos(charPos_){}
00018   inline std::string fileName() { return _fileName;}
00019   inline Emerson::uint32 line() { return _line;}
00020   inline Emerson::uint32 charPos() { return _charPos; }
00021   inline void lineIs(Emerson::uint32 line_) { _line = line_;}
00022   inline void charPosIs(Emerson::uint32 charPos_) { _charPos = charPos_ ;}
00023 };
00024 
00025 class EmersonInfo
00026 {
00027   std::stack<FileInfo> _fileStack;
00028   //void (*errorFunction_)(struct ANTLR3_BASE_RECOGNIZER_struct*, pANTLR3_UINT8*);
00029   void* errorFunction_;
00030   void* mismatchTokenFunction_;
00031   void* mismatchSetFunction_;
00032 
00033   public:
00034   inline FileInfo& currentFileInfo() { return _fileStack.top();}
00035   inline FileInfo& fileInfo() {return _fileStack.top();}
00036 
00037   inline void* errorFunction() { return errorFunction_; }
00038   inline void errorFunctionIs(void(*_errorFunction)(struct ANTLR3_BASE_RECOGNIZER_struct*, pANTLR3_UINT8*) ) { errorFunction_ = (void*)_errorFunction;}
00039 
00040   inline void* mismatchTokenFunction() { return mismatchTokenFunction_;}
00041   inline void mismatchTokenFunctionIs(void*(*_mismatchTokenFunction)(struct ANTLR3_BASE_RECOGNIZER_struct*, ANTLR3_UINT32, pANTLR3_BITSET_LIST) ) { mismatchTokenFunction_ = (void*)_mismatchTokenFunction;}
00042 
00043 
00044 
00045   void push(std::string fileName_){
00046     _fileStack.push(FileInfo(fileName_, 1, 0));
00047   }
00048 
00049 };
00050 
00051 
00052 #endif