1 #ifndef INCLUDE_UTILS_FACTORY_H_
2 #define INCLUDE_UTILS_FACTORY_H_
3 #include <glog/logging.h>
12 #define CreateInstance(SubClass, BaseClass) \
13 [](void)->BaseClass* {return new SubClass();}
33 void Register(
const std::string
id, std::function<T*(
void)> func);
38 T *
Create(
const std::string
id);
42 std::map<std::string, std::function<T*(void)>> str2func_;
47 std::function<T*(
void)> func) {
53 CHECK(str2func_.find(
id) != str2func_.end())
54 <<
"The creation function for " <<
id <<
" has not been registered";
55 return str2func_[id]();
57 #endif // INCLUDE_UTILS_FACTORY_H_
T * Create(const std::string id)
create a layer instance by providing its type
Definition: factory.h:52
factory template to generate class (or a sub-class) object based on id.
Definition: factory.h:24
void Register(const std::string id, std::function< T *(void)> func)
Register functions to create user defined classes.
Definition: factory.h:46