Go to the documentation of this file.
30 #ifndef __NMV_DYNAMIC_MODULE_H__
31 #define __NMV_DYNAMIC_MODULE_H__
58 NEMIVER_BEGIN_NAMESPACE (
nemiver)
59 NEMIVER_BEGIN_NAMESPACE (
common)
89 module_description (a_desc),
90 module_version (a_version)
118 std::vector<UString>& config_search_paths ();
120 (
const std::string &a_name);
125 virtual GModule* load_library_from_path (
const UString &a_path);
126 virtual GModule* load_library_from_module_name (
const UString &a_name);
145 friend bool gpil_common_create_loadable_module_instance (
void **a_new_inst);
153 void set_real_library_path (
const UString &a_path);
155 void set_name (
const UString &a_name);
157 void set_module_loader (
Loader *a_loader);
164 Loader* get_module_loader ();
169 const UString& get_real_library_path ()
const;
172 const UString& get_name ()
const;
178 virtual void get_info (
Info &a_info)
const = 0;
197 virtual bool lookup_interface (
const std::string &a_iface_name,
200 template <
class T>
bool lookup_interface
201 (
const std::string &a_iface_name,
205 if (!lookup_interface (a_iface_name, iface)) {
211 TSafePtr res = iface.template do_dynamic_cast<T> ();
231 m_dynamic_module (a_dynmod)
245 return *m_dynamic_module;
259 GModule* get_library_from_cache (
const UString a_name);
260 void put_library_into_cache (
const UString a_name,
295 load_iface (
const UString &a_module_name,
301 load_iface (
const UString &a_module_name,
306 load_iface (
const UString &a_module_name,
311 load_iface (
const UString &a_module_name,
314 load_iface_with_default_manager (
const UString &a_module_name,
325 DynamicModuleManager::load_iface (
const UString &a_module_name,
333 THROW (
UString (
"failed to load module '") + a_module_name);
336 LOG_REF_COUNT (module, a_module_name);
339 THROW (
UString (
"module does not have interface: ") + a_iface_name);
342 LOG_REF_COUNT (module, a_module_name);
346 result = tmp_iface.template do_dynamic_cast<T> ();
347 LOG_REF_COUNT (module, a_module_name);
351 +
" is not of the expected type'");
359 DynamicModuleManager::load_iface (
const UString &a_module_name,
365 return load_iface<T> (a_module_name, a_iface_name,
371 DynamicModuleManager::load_iface (
const UString &a_module_name,
375 return load_iface<T> (a_module_name, a_iface_name,
376 *module_loader (), a_dynmod);
381 DynamicModuleManager::load_iface (
const UString &a_module_name,
385 return load_iface<T> (a_module_name, a_iface_name,
386 *module_loader (), dynmod);
391 DynamicModuleManager::load_iface_with_default_manager
395 return get_default_manager ().load_iface<T> (a_mod_name, a_iface_name);
432 NEMIVER_END_NAMESPACE (
common)
433 NEMIVER_END_NAMESPACE (
nemiver)
435 #endif// __NMV_DYNAMIC_MODULE_H__
Definition: nmv-dynamic-module.h:95
Definition: nmv-object.h:43
Definition: nmv-address.h:31
Definition: nmv-safe-ptr-utils.h:45
UString library_name
Definition: nmv-dynamic-module.h:97
DynamicModuleManager * get_dynamic_module_manager()
#define THROW(a_reason)
Definition: nmv-exception.h:99
#define NEMIVER_API
Definition: nmv-api-macros.h:53
DynamicModule & get_dynamic_module() const
Definition: nmv-dynamic-module.h:242
const UString & get_name() const
gets the (short) name of this dynmod
The base class for loadable modules.
Definition: nmv-dynamic-module.h:76
bool nemiver_common_create_dynamic_module_instance(void **a_new_instance)
the factory of the DynamicModule.
Definition: nmv-ustring.h:45
virtual bool lookup_interface(const std::string &a_iface_name, DynModIfaceSafePtr &a_iface)=0
lookup the interface of a service object
Definition: nmv-dynamic-module.h:220
Object & operator=(Object const &)
DynModIface(DynamicModuleSafePtr &a_dynmod)
Definition: nmv-dynamic-module.h:230
Definition: nmv-dynamic-module.h:249
SafePtr< ObjectPriv > m_priv
Definition: nmv-object.h:47
SafePtr< Config, ObjectRef, ObjectUnref > ConfigSafePtr
Definition: nmv-dynamic-module.h:101
UString module_description
Definition: nmv-dynamic-module.h:82
Definition: nmv-dynamic-module.h:80
DynModIface(DynamicModule *a_dynmod)
Definition: nmv-dynamic-module.h:236
std::vector< UString > custom_library_search_paths
Definition: nmv-dynamic-module.h:96
UString module_version
Definition: nmv-dynamic-module.h:83
virtual void do_init()=0
module init routinr
Definition: nmv-safe-ptr-utils.h:55
Definition: nmv-dynamic-module.h:265
Definition: nmv-dynamic-module.h:103
SafePtr< Loader, ObjectRef, ObjectUnref > LoaderSafePtr
Definition: nmv-dynamic-module.h:136
SafePtr< T, ObjectRef, ObjectUnref > load_iface(const UString &a_module_name, const UString &a_iface_name, DynamicModule::Loader &a_loader, DynamicModuleSafePtr &a_dynmod)
Definition: nmv-dynamic-module.h:325
Definition: nmv-safe-ptr.h:71
Loader * get_module_loader()
get the module loader class
#define THROW_IF_FAIL(a_cond)
Definition: nmv-exception.h:65
virtual ~Config()
Definition: nmv-dynamic-module.h:98
Definition: nmv-proc-list-dialog.h:32
Info(const UString &a_name, const UString &a_desc, const UString &a_version)
Definition: nmv-dynamic-module.h:85
UString module_name
Definition: nmv-dynamic-module.h:81
SafePtr< T, ObjectRef, ObjectUnref > load_iface_using_context(DynamicModule &a_dynmod, const UString &a_iface_name)
Definition: nmv-dynamic-module.h:419