6 #ifndef GEOMTOOLS_DETAIL_MANAGER_INL_H_ 7 #define GEOMTOOLS_DETAIL_MANAGER_INL_H_ 1 16 plugins_dict_type::const_iterator found = _plugins_.find(a_plugin_name);
19 "No plugin named '" << a_plugin_name <<
"' !");
21 if (! entry.is_initialized ()) {
23 "Triggering initialization of the plugin named '" 26 manager * mutable_this = const_cast<manager *>(
this);
27 plugin_entry& mutable_entry = const_cast<plugin_entry &>(entry);
30 const std::type_info& ti =
typeid(T);
32 const std::type_info& tf =
typeid(cur);
39 plugins_dict_type::iterator found = _plugins_.find(a_plugin_name);
42 "No plugin named '" << a_plugin_name <<
"' !");
44 if (! entry.is_initialized ()) {
47 const std::type_info& ti =
typeid(T);
49 const std::type_info& tf =
typeid(cur);
52 "Requested plugin type '" 53 << ti.name() <<
"' does not match the type '" 55 <<
"' of the plugin named '" << a_plugin_name
57 return dynamic_cast<T&>(found->second.grab());
63 manager* sm = const_cast<manager*>(
this);
64 return const_cast<T&>(sm->
grab_plugin<T>(a_plugin_name));
67 template <
class PluginClass>
69 _plugins_factory_register_.registration(
id, boost::factory<PluginClass*>());
75 #endif // GEOMTOOLS_DETAIL_MANAGER_INL_H_
Internal record plugin handling.
Definition: manager.h:149
Utility macros for exception handling.
#define DT_LOG_NOTICE(Priority, Message)
Definition: logger_macros.h:118
#define DT_THROW_IF(Condition, ExceptionType, Message)
Definition: exception.h:76