28#ifndef __HighLevelGpuProgramManager_H__
29#define __HighLevelGpuProgramManager_H__
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Interface definition for factories of HighLevelGpuProgram.
virtual const String & getLanguage(void) const =0
Get the name of the language this factory creates programs for.
HighLevelGpuProgramFactory()
virtual HighLevelGpuProgram * create(ResourceManager *creator, const String &name, ResourceHandle handle, const String &group, bool isManual, ManualResourceLoader *loader)=0
virtual void destroy(HighLevelGpuProgram *prog)=0
virtual ~HighLevelGpuProgramFactory()
This ResourceManager manages high-level vertex and fragment programs.
HighLevelGpuProgramPtr getByName(const String &name, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
Get a resource by name.
~HighLevelGpuProgramManager()
FactoryMap mFactories
Factories capable of creating HighLevelGpuProgram instances.
static HighLevelGpuProgramManager & getSingleton(void)
Override standard Singleton retrieval.
HighLevelGpuProgramManager()
void removeFactory(HighLevelGpuProgramFactory *factory)
Remove a factory object for high-level programs of a given language.
map< String, HighLevelGpuProgramFactory * >::type FactoryMap
HighLevelGpuProgramFactory * mUnifiedFactory
Factory for unified high-level programs.
HighLevelGpuProgramFactory * mNullFactory
Factory for dealing with programs for languages we can't create.
HighLevelGpuProgramFactory * getFactory(const String &language)
bool isLanguageSupported(const String &lang)
Returns whether a given high-level language is supported.
static HighLevelGpuProgramManager * getSingletonPtr(void)
Override standard Singleton retrieval.
HighLevelGpuProgramPtr createProgram(const String &name, const String &groupName, const String &language, GpuProgramType gptype)
Create a new, unloaded HighLevelGpuProgram.
void addFactory(HighLevelGpuProgramFactory *factory)
Add a new factory object for high-level programs of a given language.
Resource * createImpl(const String &name, ResourceHandle handle, const String &group, bool isManual, ManualResourceLoader *loader, const NameValuePairList *createParams)
Create a new resource instance compatible with this manager (no custom parameters are populated at th...
Abstract base class representing a high-level program (a vertex or fragment program).
Interface describing a manual resource loader.
Defines a generic resource handler.
Abstract class representing a loadable resource (e.g.
Template class for creating single-instance global classes.
map< String, String >::type NameValuePairList
Name / value parameter pair (first = name, second = value)
GpuProgramType
Enumerates the types of programs which can run on the GPU.
unsigned long long int ResourceHandle
std::map< K, V, P, A > type