Top | ![]() |
![]() |
![]() |
![]() |
#define | GWY_MODULE_QUERY() |
gboolean | (*GwyModuleRegisterFunc) () |
GwyModuleInfo * | (*GwyModuleQueryFunc) () |
GQuark | gwy_module_error_quark () |
void | gwy_module_register_modules () |
const GwyModuleInfo * | gwy_module_lookup () |
const gchar * | gwy_module_get_filename () |
GSList * | gwy_module_get_functions () |
void | gwy_module_foreach () |
const GwyModuleInfo * | gwy_module_register_module () |
#define GWY_MODULE_QUERY(mod_info)
The module query must be the ONLY exported symbol from a module.
This macro does The Right Thing necessary to export module info in a way Gwyddion understands it. Put GWY_MODULE_QUERY with the module info (GwyModuleInfo) of your module as its argument on a line (with NO semicolon after).
If you write a module in C++ note the module query must have C linkage.
This is achieved by marking it extern "C"
:
1 2 3 |
extern "C" { GWY_MODULE_QUERY(module_info) } |
This has to be done manually in versions up to 2.24; since version 2.25
GWY_MODULE_QUERY()
includes extern "C"
automatically if
it is compiled using a C++ compiler.
gboolean
(*GwyModuleRegisterFunc) (void
);
Module registration function type.
It actually runs particular featrue registration functions, like
gwy_file_func_register()
and gwy_process_func_register()
.
Whether the registration succeeded. When it returns FALSE
, the
module and its features are unloaded (FIXME: maybe. Currenly only
module is unloaded, features are NOT unregistered, this can lead
to all kinds of disasters).
GwyModuleInfo *
(*GwyModuleQueryFunc) (void
);
Module query function type.
The module query function should be simply declared as GWY_MODULE_QUERY(mod_info), where mod_info is module info struct for the module.
GQuark
gwy_module_error_quark (void
);
Returns error domain for module loading.
See and use GWY_MODULE_ERROR
.
void
gwy_module_register_modules (const gchar **paths
);
Registers all modules in given directories.
It can be called several times (on different directories). No errors are
reported, register modules individually with gwy_module_register_module()
to get registration errors.
const GwyModuleInfo *
gwy_module_lookup (const gchar *name
);
Returns information about one module.
The module info, of NULL
if not found. It must be considered
constant and never modified or freed.
const gchar *
gwy_module_get_filename (const gchar *name
);
Returns full file name of a module.
GSList *
gwy_module_get_functions (const gchar *name
);
Returns list of names of functions a module implements.
List of module function names, as a GSList that is owned by module loader and must not be modified or freed.
void gwy_module_foreach (GHFunc function
,gpointer data
);
Runs function
on each registered module.
It passes module name as the key and pointer to module info (GwyModuleInfo) as the value. Neither should be modified.
const GwyModuleInfo * gwy_module_register_module (const gchar *name
,GError **error
);
Loads a single module.
name |
Module file name to load, including full path and extension. |
|
error |
Location to store error, or |
#define GWY_MODULE_ABI_VERSION 2
Gwyddion module ABI version.
To be filled as abi_version
in GwyModuleInfo.
Type of module loading and registration error.
Module has an invalid name. It is recommended that module names are valid C identifiers, possibly with dashes instead of underscores, but only really broken names are rejected. |
||
A module of the same name has already been registered. |
||
Calling |
||
Module does not contain any query function. |
||
Module has different ABI version than expected/supported; or required info field are missing. |
||
Module query function provided |
||
The registration function returned |
struct GwyModuleInfo { guint32 abi_version; GwyModuleRegisterFunc register_func; const gchar *blurb; const gchar *author; const gchar *version; const gchar *copyright; const gchar *date; };
Module information returned by GWY_MODULE_QUERY()
.
guint32 |
Gwyddion module ABI version, should be always GWY_MODULE_ABI_VERSION. |
|
GwyModuleRegisterFunc |
Module registration function (the function run by Gwyddion module system, actually registering particular module features). |
|
const gchar * |
Some module description. |
|
const gchar * |
Module author(s). |
|
const gchar * |
Module version. |
|
const gchar * |
Who has copyright on this module. |
|
const gchar * |
Date (year). |