/* Copyright 2010 sss * This file is part of evil_core. * * evil_core is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * evil_core is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with evil_core. If not, see .*/ #ifndef PLUGINAPI_H_INCLUDED #define PLUGINAPI_H_INCLUDED /* * this is genereic plugin api header, only c language here */ typedef void* (*SERVICE)(void*); typedef void* (*EVENT_HANDLER)(void*); /* * CreateServiceFunction should be called with service name like: PluginName/ServiceName * EC/* reserved for core services */ typedef struct { int (*CreateServiceFunction)(const char *,SERVICE); //register new service "service name" in core (will be avaible for all modules) void* (*CallService)(const char *,void*); //execute "service name" service with custom data (service dependent) int (*ServiceExists)(const char *); //check if "service name" service exists int (*RegisterEventHandler)(int, EVENT_HANDLER); //event type, handler function, return 0 on success int (*RegisterEventType)(int, int); //event type, special id, retrun 0 on success void* (*ExecuteEvent)(int, int, void*); //event type, special id, custom data } PLUGINLINK; typedef struct { wchar_t *name, *description, *author, *authoremail; unsigned long version; int pluginid; //special id will be set by core, neede to call some core services }PLUGININFO; #endif // PLUGINAPI_H_INCLUDED