xmlmodule: dynamic module loading

## 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 xmlModule * xmlModulePtr;
    typedef enum xmlModuleOption;
    int	xmlModuleFree			(xmlModulePtr module);
    int	xmlModuleSymbol			(xmlModulePtr module,
    					 const char * name,
    					 void ** symbol);
    xmlModulePtr	xmlModuleOpen		(const char * name,
    					 int options);
    int	xmlModuleClose			(xmlModulePtr module);

## 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 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

`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