xmlmodule

xmlmodule - dynamic module loading

basic API for dynamic module loading, used by libexslt added in 2.6.17

Author(s): Joel W. Reed

Synopsis

typedef struct _xmlModule xmlModule;
typedef enum xmlModuleOption;
typedef xmlModule * xmlModulePtr;
int	xmlModuleClose			(xmlModulePtr module);
int	xmlModuleFree			(xmlModulePtr module);
xmlModulePtr	xmlModuleOpen		(const char * name, 
int options); int xmlModuleSymbol (xmlModulePtr module,
const char * name,
void ** symbol);

Description

Details

Structure xmlModule

struct _xmlModule {
The content of this structure is not made public by the API.
} xmlModule;


Enum xmlModuleOption

enum xmlModuleOption {
    XML_MODULE_LAZY = 1 /* lazy binding */
    XML_MODULE_LOCAL = 2 /*  local binding */
};


Typedef xmlModulePtr

xmlModule * xmlModulePtr;

A handle to a dynamically loaded module


xmlModuleClose ()

int	xmlModuleClose			(xmlModulePtr module)

The close operations unload the associated module and free the data associated to the module.

module: the module handle
Returns: 0 in case of success, -1 in case of argument error and -2 if the module could not be closed/unloaded.

xmlModuleFree ()

int	xmlModuleFree			(xmlModulePtr module)

The free operations free the data associated to the module but does not unload the associated shared library which may still be in use.

module: the module handle
Returns: 0 in case of success, -1 in case of argument error

xmlModuleOpen ()

xmlModulePtr	xmlModuleOpen		(const char * name, 
int options)

Opens a module/shared library given its name or path NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We cannot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const xmlChar * . TODO: options are not yet implemented.

name: the module name
options: a set of xmlModuleOption
Returns: a handle for the module or NULL in case of error

xmlModuleSymbol ()

int	xmlModuleSymbol			(xmlModulePtr module, 
const char * name,
void ** symbol)

Lookup for a symbol address in the given module NOTE: that due to portability issues, behaviour can only be guaranteed with @name using ASCII. We cannot guarantee that an UTF-8 string would work, which is why name is a const char * and not a const xmlChar * .

module: the module
name: the name of the symbol
symbol: the resulting symbol address
Returns: 0 if the symbol was found, or -1 in case of error