75 lines
1.4 KiB
C
75 lines
1.4 KiB
C
/**
|
|
* @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);
|