/* * plugin.h -- enfle plugin interface header * (C)Copyright 1999 by Hiroshi Takekawa * Last Modified: Thu Sep 9 19:52:56 1999. * $Id: plugin.h,v 1.5 1999/09/09 20:53:56 sian Exp $ */ #ifndef _PLUGIN_H #define _PLUGIN_H #include #include typedef enum _plugintype { _Loader, _Saver, _Archiver } PluginType; typedef struct _plugininfo PluginInfo; #include "enfle.h" #include "image.h" #include "dlist.h" /* plugin interface version 1 */ #define METHOD(type, name, args) type (*name)args struct _plugininfo { int version; PluginType type; char *pluginname; char *pluginshortname; unsigned char *author; void *dlhandle; union _functions { struct _loader { METHOD(int, load_image, (Info *, Image *)); } loader; struct _saver { METHOD(int, save_image, (Info *, Image *, char *)); } saver; struct _archiver { METHOD(int, open, (Archive *)); } archiver; } functions; }; PluginInfo *plugin_retrieve_info(int (*)(PluginInfo *)); int plugin_install(Dlist *, PluginInfo *); int plugin_uninstall(PluginInfo *); int plugin_load(Dlist *, char *); int plugin_scan_directory(Dlist *, char *); int plugin_destroy(Dlist *); #include "archive.h" #endif