22 #ifndef EZGL_COMPONENTFACTORY_HPP 23 #define EZGL_COMPONENTFACTORY_HPP 43 #define EZGL_COMPONENT_ENLIST(Obj) \ 44 EzGL::ComponentFactory::Key const Obj##ComponentID = \ 45 EzGL::ComponentFactory::Enlist<Component<class Obj>>(#Obj) 71 using Key = std::string;
89 for (
Key const &key : keys)
107 if (ComponentFactory::GetComponentMap().count(key) == 0)
108 ComponentFactory::GetComponentMap()[key] = T::Create;
118 static ComponentMap& GetComponentMap();
static Key Enlist(Key const &key)
Component enlister.
Definition: ComponentFactory.hpp:105
Component enlister and smart pointer factory.
Definition: ComponentFactory.hpp:63
std::vector< ComponentPtr > ComponentVec
Component smart pointer container.
Definition: ComponentFactory.hpp:56
Allows Component to utilize dynamic polymorphism.
std::string Key
Component key type.
Definition: ComponentFactory.hpp:71
static ComponentVec Create(T const &keys)
Component container creator.
Definition: ComponentFactory.hpp:86
static ComponentPtr Create(Key const &key)
Component smart pointer creator.
Definition: ComponentFactory.cpp:31
std::unique_ptr< class IComponent > ComponentPtr
Component smart pointer type.
Definition: ComponentFactory.hpp:53