22 #ifndef CRNDATAFACTORY_HEADER
23 #define CRNDATAFACTORY_HEADER
49 typename std::enable_if<IsSerializable<T>::value,
int>::type = 0
79 static bool RegisterClass(
const String &name, std::unique_ptr<DataFactoryElementBase> &&cstr);
93 std::map<String, std::unique_ptr<DataFactoryElementBase> > data;
106 #define CRN_DATA_FACTORY_REGISTER(elemname, classname) \
107 crn::DataFactory::RegisterClass(elemname, std::make_unique<crn::DataFactoryElement<classname>>());\
108 crn::Serializer::Register<classname>();
~DataFactory()
Destructor.
virtual UObject Create(xml::Element &el) const =0
Creates an object.
static bool RegisterClass(const String &name, std::unique_ptr< DataFactoryElementBase > &&cstr)
Registers a class in the factory.
Produces CRNData objects from XML.
static UObject CreateData(xml::Element &el)
Creates and initializes a SObject from an XML element.
A UTF32 character string class.
virtual ~DataFactoryElement() override
DataFactory & operator=(const DataFactory &)=delete
virtual ~DataFactoryElementBase()
Base class for factory elements.
static String GetKnownTypes()
Returns the list of registered classes.
virtual UObject Create(xml::Element &el) const override
Creates an object.