Polyphase Game Engine
Loading...
Searching...
No Matches
Factory.h File Reference
#include "Utilities.h"

Go to the source code of this file.

Classes

class  Factory
 

Macros

#define DECLARE_FACTORY_MANAGER(Base)
 
#define DEFINE_FACTORY_MANAGER(Base)
 
#define DECLARE_FACTORY(Class, BaseClass)
 
#define DEFINE_FACTORY_EX(Class, BaseClass, TypeMod)
 
#define DEFINE_FACTORY(Class, BaseClass)   DEFINE_FACTORY_EX(Class, BaseClass, 0)
 

Macro Definition Documentation

◆ DECLARE_FACTORY

#define DECLARE_FACTORY (   Class,
  BaseClass 
)
Value:
class Factory_##Class; \
virtual TypeId GetType() const; \
virtual const char* GetClassName() const; \
static TypeId GetStaticType();
uint32_t TypeId
Definition EngineTypes.h:64

◆ DECLARE_FACTORY_MANAGER

#define DECLARE_FACTORY_MANAGER (   Base)
Value:
static std::vector<Factory*>& GetFactoryList(); \
static TypeId RegisterFactory(Factory* factory, uint32_t typeIdMod = 0); \
static Base* CreateInstance(const char* typeName); \
static Base* CreateInstance(TypeId typeId);
Definition Factory.h:62

◆ DEFINE_FACTORY

#define DEFINE_FACTORY (   Class,
  BaseClass 
)    DEFINE_FACTORY_EX(Class, BaseClass, 0)

◆ DEFINE_FACTORY_EX

#define DEFINE_FACTORY_EX (   Class,
  BaseClass,
  TypeMod 
)
Value:
class Factory_##Class : public Factory \
{ \
public: \
Factory_##Class() { mType = BaseClass::RegisterFactory(this, TypeMod); } \
virtual void* Create() override { return new Class(); } \
virtual const char* GetClassName() const override { return #Class; } \
}; \
static Factory_##Class sFactory_##Class; \
TypeId Class::GetType() const { return sFactory_##Class.GetType(); } \
const char* Class::GetClassName() const { return sFactory_##Class.GetClassName(); } \
TypeId Class::GetStaticType() { return sFactory_##Class.GetType(); }
virtual const char * GetClassName() const
Definition Factory.h:79
virtual void * Create()
Definition Factory.h:74

◆ DEFINE_FACTORY_MANAGER

#define DEFINE_FACTORY_MANAGER (   Base)