"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSGraphicsLib/Src/PreProc/LSGPreProcContainer.h

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 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator