Main Page Widgets glibmm Namespaces Book

# Glib::Module Class Reference

Dynamic Loading of Modules These functions provide a portable way to dynamically load object files (commonly known as 'plug-ins'). More...

List of all members.

## Public Member Functions

| Module (const std::string& file_name, ModuleFlags flags=ModuleFlags(0))
| Opens a module.
virtual | ~Module ()
| Close a module.
| operator bool () const
| Check whether the module was found.
void | make_resident ()
| Ensures that a module will never be unloaded.
bool | get_symbol (const std::string& symbol_name, void*& symbol) const
| Gets a symbol pointer from the module.
std::string | get_name () const
| Get the name of the module.
GModule* | gobj ()
const GModule* | gobj () const

## Static Public Member Functions

static bool | get_supported ()
| Checks if modules are supported on the current platform.
static std::string | get_last_error ()
| Gets a string describing the last module error.
static std::string | build_path (const std::string& directory, const std::string& module_name)
| A portable way to build the filename of a module.

## Protected Attributes

GModule* | gobject_

## Detailed Description

Dynamic Loading of Modules These functions provide a portable way to dynamically load object files (commonly known as 'plug-ins').

The current implementation supports all systems that provide an implementation of dlopen() (e.g. Linux/Sun), as well as HP-UX via its shl_load() mechanism, and Windows platforms via DLLs.

## Constructor & Destructor Documentation

Glib::Module::Module | ( | const std::string & | file_name,
|  | ModuleFlags | flags = `ModuleFlags(0)` |
| ) |  |  | `[explicit]`

Opens a module.

First of all it tries to open file_name as a module. If that fails and file_name has the ".la"-suffix (and is a libtool archive) it tries to open the corresponding module. If that fails and it doesn't have the proper module suffix for the platform (G_MODULE_SUFFIX), this suffix will be appended and the corresponding module will be opended. If that fails and file_name doesn't have the ".la"-suffix, this suffix is appended and it tries to open the corresponding module.

Use operator bool() to see whether the operation succeeded. For instance,

     Glib::Module module("plugins/helloworld");
     if(module)
     {
       void* func = 0;
       bool found = get_symbol("some_function", func);
     }

Parameters:

  | file_name | The library filename to open
  | flags | Flags to configure the load process

virtual Glib::Module::~Module | ( |  | ) | `[virtual]`

Close a module.

The module will be removed from memory, unless `make_resident` has been called.

## Member Function Documentation

Glib::Module::operator bool | ( |  | ) | const

Check whether the module was found.

static bool Glib::Module::get_supported | ( |  | ) | `[static]`

Checks if modules are supported on the current platform.

Returns:
  true if available, false otherwise

void Glib::Module::make_resident | ( |  | ) |

Ensures that a module will never be unloaded.

Any calls to the Glib::Module destructor will not unload the module.

static std::string Glib::Module::get_last_error | ( |  | ) | `[static]`

Gets a string describing the last module error.

Returns:
  The error string

bool Glib::Module::get_symbol | ( | const std::string & | symbol_name,
|  | void *& | symbol |
| ) |  |  | const

Gets a symbol pointer from the module.

Parameters:

  | symbol_name | The name of the symbol to lookup
  | symbol | A pointer to set to the symbol

Returns:
  True if the symbol was found, false otherwise.

std::string Glib::Module::get_name | ( |  | ) | const

Get the name of the module.

Returns:
  The name of the module

static std::string Glib::Module::build_path | ( | const std::string & | directory,
|  | const std::string & | module_name |
| ) |  |  | `[static]`

A portable way to build the filename of a module.

The platform-specific prefix and suffix are added to the filename, if needed, and the result is added to the directory, using the correct separator character.

The directory should specify the directory where the module can be found. It can be an empty string to indicate that the module is in a standard platform-specific directory, though this is not recommended since the wrong module may be found.

For example, calling `g_module_build_path()` on a Linux system with a directory of `/lib` and a module_name of "mylibrary" will return `/lib/libmylibrary.so`. On a Windows system, using `\Windows` as the directory it will return `\Windows\mylibrary.dll`.

Parameters:

  | directory | The directory the module is in
  | module_name | The name of the module

Returns:
  The system-specific filename of the module

GModule* Glib::Module::gobj | ( |  | ) | `[inline]`

const GModule* Glib::Module::gobj | ( |  | ) | const`[inline]`

## Member Data Documentation

GModule* Glib::Module::gobject_`[protected]`

The documentation for this class was generated from the following file:

- module.h