re/include/re_mod.h
2017-06-29 22:32:52 +02:00

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);