#ifndef CDDB_PLUGIN_BASE_H #define CDDB_PLUGIN_BASE_H // Version of module interface #define CDDBMODULE_VERSION 1 // Module Categories // modules need to set this approprately to tell the manager what services it provides #define CDDBMODULE_DECODER 0x10 #define CDDBMODULE_DECODERINFO 0x20 #define CDDBMODULE_ENCODER 0x40 #define CDDBMODULE_SIGNATURE 0x80 #define CDDBMODULE_FILEINFO 0x100 #define CDDBMODULE_SECURITY 0x200 // // base module type // all modules derive from this type // #ifndef CDDBMODULEINTERFACE #define CDDBMODULEINTERFACE typedef struct { void *handle; char *moduleID; int version; int categories; int initialized; int (__stdcall *Init)(void*); int (__stdcall *Deinit)(); } CDDBModuleInterface; #endif // entry point function type typedef CDDBModuleInterface* (__cdecl *CDDBModuleQueryInterfaceFunc)(const char* lpszInterface); // // internal module handle // typedef struct { void *handle; int initialized; CDDBModuleInterface *baseInterface; } CDDBModule; #endif /* CDDB_PLUGIN_BASE_H */