"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSGraphicsLib/Src/ShaderLanguage/LSGShaderScopeStack.h

00001 
00016 #ifndef __LSG_SHADERSCOPESTACK_H__
00017 #define __LSG_SHADERSCOPESTACK_H__
00018 
00019 #include "../LSGGraphicsLib.h"
00020 #include "LSGShaderScope.h"
00021 #include "Vector/LSTLVector.h"
00022 
00023 namespace lsg {
00024 
00031         class CShaderScopeStack {
00032         public :
00033                 // == Various constructors.
00034                 LSE_CALLCTOR                                                            CShaderScopeStack();
00035                 LSE_CALLCTOR                                                            ~CShaderScopeStack();
00036 
00037 
00038                 // == Types.
00042                 typedef struct LSG_TYPE_INDEX_AND_INDEX {
00046                         LSUINT32                                                                ui32StackIndex;
00047 
00051                         CShaderScope::LSG_TYPE_AND_INDEX                taiScopeIndex;
00052                 } * LPLSG_TYPE_INDEX_AND_INDEX, * const LPCLSG_TYPE_INDEX_AND_INDEX;
00053 
00054 
00055                 // == Functions.
00061                 LSBOOL LSE_CALL                                                         Push();
00062 
00066                 LSVOID LSE_CALL                                                         Pop();
00067 
00071                 LSVOID LSE_CALL                                                         Reset();
00072 
00082                 CShaderScope * LSE_CALL                                         GetCurrentScope();
00083 
00093                 const CShaderScope * LSE_CALL                           GetCurrentScope() const;
00094 
00101                 CShaderScope * LSE_CALL                                         GetScope( LSUINT32 _ui32Index );
00102 
00109                 const CShaderScope * LSE_CALL                           GetScope( LSUINT32 _ui32Index ) const;
00110 
00116                 LSUINT32 LSE_CALL                                                       TotalScopes() const;
00117 
00125                 LSBOOL LSE_CALL                                                         IdentifierExistsAs( CShaderScope::LSG_TYPE _tType, const CString &_sName ) const;
00126 
00138                 LSBOOL LSE_CALL                                                         GetIdentifiersAs( CShaderScope::LSG_TYPE _tType, const CString &_sName, CVectorPoD<LSG_TYPE_INDEX_AND_INDEX> &_vRet ) const;
00139 
00147                 LSBOOL LSE_CALL                                                         GetNameAssociation( const CString &_sName, const LSCHAR * &_pcNew ) const;
00148 
00149 
00150         protected :
00151                 // == Members.
00155                 CVector<CShaderScope, LSUINT32, 512UL>          m_vStack;
00156         };
00157 
00158 }       // namespace lsg
00159 
00160 #endif  // __LSG_SHADERSCOPESTACK_H__
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator