csgfx/shadervarcontext.h
Go to the documentation of this file.00001 /* 00002 Copyright (C) 2003 by Jorrit Tyberghein 00003 (C) 2003 by Frank Richter 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public 00016 License along with this library; if not, write to the Free 00017 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00018 */ 00019 00020 #ifndef __CS_CSGFX_SHADERVARCONTEXT_H__ 00021 #define __CS_CSGFX_SHADERVARCONTEXT_H__ 00022 00023 #include "csextern.h" 00024 00025 #include "csutil/scf_implementation.h" 00026 00027 #include "ivideo/shader/shader.h" 00028 #include "shadervar.h" 00029 00034 namespace CS 00035 { 00041 class CS_CRYSTALSPACE_EXPORT ShaderVariableContextImpl : 00042 public virtual iShaderVariableContext 00043 { 00044 protected: 00045 csRefArray<csShaderVariable> variables; 00046 00047 public: 00048 virtual ~ShaderVariableContextImpl(); 00049 00050 const csRefArray<csShaderVariable>& GetShaderVariables () const 00051 { return variables; } 00052 virtual void AddVariable (csShaderVariable *variable); 00053 virtual csShaderVariable* GetVariable (csStringID name) const; 00054 virtual void PushVariables (iShaderVarStack* stacks) const; 00055 virtual bool IsEmpty() const { return variables.Length() == 0; } 00056 virtual void ReplaceVariable (csShaderVariable *variable); 00057 virtual void Clear () { variables.Empty(); } 00058 virtual bool RemoveVariable (csShaderVariable* variable); 00059 }; 00060 } 00061 00065 class CS_CRYSTALSPACE_EXPORT csShaderVariableContext : 00066 public scfImplementation1<csShaderVariableContext, 00067 scfFakeInterface<iShaderVariableContext> >, 00068 public CS::ShaderVariableContextImpl 00069 { 00070 public: 00071 CS_LEAKGUARD_DECLARE (csShaderVariableContext); 00072 00073 csShaderVariableContext (); 00074 csShaderVariableContext (const csShaderVariableContext& other); 00075 virtual ~csShaderVariableContext (); 00076 }; 00077 00078 #endif // __CS_CSGFX_SHADERVARCONTEXT_H__
Generated for Crystal Space by doxygen 1.4.7