00001 #ifndef PARSER_H
00002 #define PARSER_H
00003
00004 #include <iostream>
00005 #include <fstream>
00006 #include <string>
00007 #include <cstdlib>
00008 #include <boost/tokenizer.hpp>
00009 #include <boost/lexical_cast.hpp>
00010 #include <boost/format.hpp>
00011 #include <ngl/TransformStack.h>
00012
00013
00014
00015
00025
00026
00027
00028
00029 typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
00030
00031
00032 class Parser
00033 {
00034
00035 public:
00036
00037 Parser();
00038 ~Parser();
00039
00040
00041 std::vector <ngl::Transformation> readText();
00042
00043 std::vector <int> readPositions();
00046 void parseNumber(
00047 tokenizer::iterator &_firstWord
00048 );
00051
00052 void parseTranslate(
00053 tokenizer::iterator &_firstWord
00054 );
00057 void parseRotate(
00058 tokenizer::iterator &_firstWord
00059 );
00062 void parseScale(
00063 tokenizer::iterator &_firstWord
00064 );
00066 void parsePositions(
00067 tokenizer::iterator &_firstWord
00068 );
00069
00071 inline float getPrecision(){return m_noOfEntities;}
00072
00073
00074 std::vector <ngl::Transformation> m_levelTransformation;
00076 ngl::Transformation m_trans;
00078 float m_noOfEntities;
00080 float m_index;
00081
00083 std::vector <int> m_obstaclePositions;
00084
00086 bool m_datastart;
00087 };
00088
00089
00090
00091 #endif // PARSER_H