00001
00002 #ifndef __scanner_hpp__
00003 #define __scanner_hpp__
00004
00005 #include <stdio.h>
00006
00007 #define SCAN_BUFFER_SIZE 1024
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 typedef enum {
00034 OPEN_PARENT = '(',
00035 CLOSE_PARENT = ')',
00036 OPEN_BRACE = '{',
00037 CLOSE_BRACE = '}',
00038 COMMA = ',',
00039
00040 INCLUDE = 1000,
00041 FRAME_BEGIN,
00042 FRAME_END,
00043
00044 CAMERA,
00045 RENDERER,
00046 OUTPUT,
00047 OBJECTSET,
00048 SAMPLER,
00049
00050 OBJECT,
00051 MATTER,
00052 SHADER,
00053
00054 IDENTITY,
00055 MATRIX_LOAD,
00056 MATRIX_MUL,
00057 TRANSLATE,
00058 SCALE,
00059 ROTATE,
00060
00061 INTEGER,
00062 REAL,
00063 STRING
00064 } TYPE;
00065
00066 class Scanner
00067 {
00068 public:
00069 Scanner( FILE* fp = NULL );
00070
00071 TYPE parse();
00072 private:
00073 void buffer_fill();
00074
00075 FILE* _fp;
00076 int _pos_current;
00077 long _file_pos;
00078 char _buffer[ SCAN_BUFFER_SIZE ];
00079 };
00080 #endif // __scanner_hpp__