31 #ifndef OPENCV_FLANN_OBJECT_FACTORY_H_
32 #define OPENCV_FLANN_OBJECT_FACTORY_H_
43 template<
typename BaseClass,
44 typename UniqueIdType,
45 typename ObjectCreator = BaseClass* (*)()>
49 typedef std::map<UniqueIdType, ObjectCreator> ObjectRegistry;
56 bool subscribe(UniqueIdType
id, ObjectCreator creator)
58 if (object_registry.find(
id) != object_registry.end())
return false;
60 object_registry[id] = creator;
66 return object_registry.erase(
id) == 1;
69 ObjectCreator
create(UniqueIdType
id)
71 typename ObjectRegistry::const_iterator iter = object_registry.find(
id);
73 if (iter == object_registry.end()) {
82 static ThisClass the_factory;
86 ObjectRegistry object_registry;
Definition: object_factory.h:39
bool subscribe(UniqueIdType id, ObjectCreator creator)
Definition: object_factory.h:56
static ThisClass & instance()
Definition: object_factory.h:80
Definition: object_factory.h:46
ObjectCreator create(UniqueIdType id)
Definition: object_factory.h:69
bool unregister(UniqueIdType id)
Definition: object_factory.h:64