6 #ifndef _QITYPE_PACKAGE_HPP_
7 #define _QITYPE_PACKAGE_HPP_
16 #include <boost/thread/recursive_mutex.hpp>
17 #include <boost/shared_ptr.hpp>
46 , _moduleInfo(moduleInfo)
50 return _moduleInfo.name;
76 _moduleInfo.path =
name;
84 return _moduleInfo.name;
122 #define QI_REGISTER_MODULE(modname, fun) \
123 extern "C" QI_EXPORT_API void qi_module_init(::qi::ModuleBuilder *mb) { \
124 if (modname != mb->moduleName()) { \
125 qiLogCategory("qi.module"); \
126 qiLogError() << "module name do not match: '" \
127 << modname << "' vs '" << mb->moduleName() << "'"; \
135 #define QI_REGISTER_MODULE_EMBEDDED(name, fun) \
136 static bool BOOST_PP_CAT(_register_module, __COUNTER__) QI_ATTR_UNUSED \
137 = ::qi::registerCppEmbeddedModule(name, fun);
159 #define QI_REGISTER_MODULE_FACTORY(factoryType, fun) \
160 static bool BOOST_PP_CAT(_register_module_factory, __COUNTER__) QI_ATTR_UNUSED \
161 = ::qi::registerModuleFactory(factoryType, fun)
165 #define QI_REGISTER_MODULE_FACTORY_PLUGIN(factoryType, fun) \
166 extern "C" QI_EXPORT_API void module_factory_plugin() { \
167 ::qi::registerModuleFactory(factoryType, fun); \
const ModuleInfo & moduleInfo() const
QI_TYPE_STRUCT(qi::ModuleInfo, name, type, path)
const std::string & moduleName() const
std::vector< ModuleInfo > listModules()
void setModuleInfo(const ModuleInfo &mi)
void setModulePath(const std::string &name)
Object is thread safe, multiple calls can occur in different threads in parallel. ...
const std::string & moduleName() const
AnyModule(const ModuleInfo &moduleInfo, const qi::AnyObject &object)
boost::function< AnyModule(const qi::ModuleInfo &)> ModuleFactoryFunctor
bool registerCppEmbeddedModule(const std::string &moduleName, boost::function< void(ModuleBuilder *)> fun)
bool registerModuleFactory(const std::string &name, ModuleFactoryFunctor fun)
ModuleBuilder(const ModuleInfo &mi)
ModuleInfo & moduleInfo()