"L. Spiro Engine"
|
00001 00016 #ifndef __LSG_PREPROCCONTAINER_H__ 00017 #define __LSG_PREPROCCONTAINER_H__ 00018 00019 #include "../LSGGraphicsLib.h" 00020 #include "LSGPreProcSyntaxNodes.h" 00021 #include "String/LSTLString.h" 00022 #include "Vector/LSTLVector.h" 00023 00024 namespace lsg { 00025 00032 class CPreProcContainer { 00033 public : 00034 // == Various constructors. 00035 LSE_CALLCTOR CPreProcContainer(); 00036 00037 00038 // == Functions. 00046 LSBOOL LSE_CALL CreateIdentifier( const LSCHAR * _pcText, YYSTYPE::LSG_NODE_DATA &_ndNode ); 00047 00056 LSBOOL LSE_CALL CreateDecimal( const LSCHAR * _pcText, YYSTYPE::LSG_NODE_DATA &_ndNode ); 00057 00066 LSBOOL LSE_CALL CreateHexadecimal( const LSCHAR * _pcText, YYSTYPE::LSG_NODE_DATA &_ndNode ); 00067 00076 LSBOOL LSE_CALL CreateFloatingPoint( const LSCHAR * _pcText, YYSTYPE::LSG_NODE_DATA &_ndNode ); 00077 00086 LSBOOL LSE_CALL CreateUnaryOp( LSUINT32 _ui32Op, const YYSTYPE::LSG_NODE_DATA &_ndBase, 00087 YYSTYPE::LSG_NODE_DATA &_ndNode ); 00088 00099 LSBOOL LSE_CALL CreateMath( const YYSTYPE::LSG_NODE_DATA &_ndLeft, 00100 const YYSTYPE::LSG_NODE_DATA &_ndRight, 00101 LSUINT32 _ui32Op, YYSTYPE::LSG_NODE_DATA &_ndNode ); 00102 00112 LSBOOL LSE_CALL CreateTertiary( const YYSTYPE::LSG_NODE_DATA &_ndCond, 00113 const YYSTYPE::LSG_NODE_DATA &_ndLeft, 00114 const YYSTYPE::LSG_NODE_DATA &_ndRight, 00115 YYSTYPE::LSG_NODE_DATA &_ndNode ); 00116 00124 LSBOOL LSE_CALL CreateDefined( const YYSTYPE::LSG_NODE_DATA &_ndIdent, 00125 YYSTYPE::LSG_NODE_DATA &_ndNode ); 00126 00135 LSBOOL LSE_CALL CreateTranslationUnit( const YYSTYPE::LSG_NODE_DATA &_ndLeft, 00136 const YYSTYPE::LSG_NODE_DATA &_ndRight, 00137 YYSTYPE::LSG_NODE_DATA &_ndNode ); 00138 00145 const LSG_PREPROC_SYNTAX_NODES::LSG_NODE_DATA & LSE_CALL 00146 GetNode( LSUINT32 _ui32Index ) const; 00147 00153 LSUINT32 LSE_CALL TotalNodes() const; 00154 00161 const CString & LSE_CALL GetString( LSUINT32 _ui32Index ) const; 00162 00163 protected : 00164 // == Members. 00168 CVector<CString, LSUINT32, 32UL> m_vStringPool; 00169 00173 CVectorPoD<LSG_PREPROC_SYNTAX_NODES::LSG_NODE_DATA, LSUINT32, 512UL> 00174 m_vNodes; 00175 00176 00177 // == Functions. 00184 LSBOOL LSE_CALL AddNode( LSG_PREPROC_SYNTAX_NODES::LSG_NODE_DATA &_ndNode ); 00185 00193 LSUINT32 LSE_CALL AddIdentifier( const LSCHAR * _pcText ); 00194 }; 00195 00196 } // namespace lsg 00197 00198 #endif // __LSG_PREPROCCONTAINER_H__ 00199