libcrbn/scanner.hpp

00001 
00002 #ifndef __scanner_hpp__
00003 #define __scanner_hpp__
00004 
00005 #include <stdio.h>
00006 
00007 #define SCAN_BUFFER_SIZE 1024
00008 
00009 /*
00010   Structural words:
00011   - include
00012   - framebegin
00013   - frameend
00014 
00015   Outframe words:
00016   - camera
00017   - renderer
00018   - output
00019   - objectset
00020   - sampler
00021   
00022   Inframe words:
00023   - object
00024   - matter
00025   - shader
00026   - identity
00027   - matrixload
00028   - matrixmul
00029   - translate
00030   - scale
00031   - rotate
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__

Generated on Tue Nov 14 15:40:08 2006 for libcrbn by  doxygen 1.5.0