24 #include "cafObjectFactory.h"
26 #include "cafAssert.h"
45 std::string name()
const override {
return "Default ObjectFactory"; }
47 std::list<std::string>
classes()
const;
49 template <
typename ObjectBaseDerivative>
50 bool registerCreator()
52 auto classKeyword = ObjectBaseDerivative::classKeywordStatic();
54 auto entryIt = m_factoryMap.find( classKeyword );
55 if ( entryIt != m_factoryMap.end() )
57 CAFFA_ASSERT( classKeyword != entryIt->first );
58 CAFFA_ASSERT(
false );
61 auto object =
new ObjectCreator<ObjectBaseDerivative>();
62 m_factoryMap[std::string( classKeyword )] = object;
67 ObjectHandle::Ptr doCreate(
const std::string_view& classKeyword )
override;
76 class ObjectCreatorBase
79 ObjectCreatorBase() {}
80 virtual ~ObjectCreatorBase() {}
81 virtual ObjectHandle::Ptr create() = 0;
84 template <
typename ObjectBaseDerivative>
85 class ObjectCreator :
public ObjectCreatorBase
88 ObjectHandle::Ptr create()
override {
return std::make_shared<ObjectBaseDerivative>(); }
92 std::map<std::string, ObjectCreatorBase*, std::less<>> m_factoryMap;
Definition: cafDefaultObjectFactory.h:41
std::list< std::string > classes() const
ObjectFactory implementations.
Definition: cafDefaultObjectFactory.cpp:9
Definition: cafObjectFactory.h:39
Main Caffa namespace.
Definition: __init__.py:1