| /** |
| * @file re_mod.h Interface to loadable modules |
| * |
| * Copyright (C) 2010 Creytiv.com |
| */ |
| |
| |
| /** |
| * @def MOD_PRE |
| * |
| * Module Prefix |
| * |
| * @def MOD_EXT |
| * |
| * Module Extension |
| */ |
| #if defined (WIN32) |
| #define MOD_PRE "" |
| #define MOD_EXT ".dll" |
| #else |
| #define MOD_PRE "" |
| #define MOD_EXT ".so" |
| #endif |
| |
| |
| /** Symbol to enable exporting of functions from a module */ |
| #ifdef WIN32 |
| #define EXPORT_SYM __declspec(dllexport) |
| #else |
| #define EXPORT_SYM |
| #endif |
| |
| |
| /* ----- Module API ----- */ |
| |
| |
| /** |
| * Defines the module initialisation handler |
| * |
| * @return 0 for success, otherwise errorcode |
| */ |
| typedef int (mod_init_h)(void); |
| |
| /** |
| * Defines the module close handler |
| * |
| * @return 0 for success, otherwise errorcode |
| */ |
| typedef int (mod_close_h)(void); |
| |
| |
| struct mod; |
| struct re_printf; |
| |
| |
| /** Defines the module export */ |
| struct mod_export { |
| const char *name; /**< Module name */ |
| const char *type; /**< Module type */ |
| mod_init_h *init; /**< Module init handler */ |
| mod_close_h *close; /**< Module close handler */ |
| }; |
| |
| |
| /* ----- Application API ----- */ |
| |
| void mod_init(void); |
| void mod_close(void); |
| |
| int mod_load(struct mod **mp, const char *name); |
| int mod_add(struct mod **mp, const struct mod_export *me); |
| struct mod *mod_find(const char *name); |
| const struct mod_export *mod_export(const struct mod *m); |
| struct list *mod_list(void); |
| int mod_debug(struct re_printf *pf, void *unused); |