#include "commonheaders.h" extern std::list services; int ServiceExists(const char *name); void CreateServiceFunction(const char* name, SERVICE svc) { if(!ServiceExists(name)) services.push_back(new service(name, svc)); } void* CallService(const char *name,void* data) { if(!services.empty()) { std::list::iterator end = services.end(); for(std::list::iterator i = services.begin(); i != end; ++i) { if(!strcmp((*i)->getName(), name)) return (*i)->getService()(data); } } return 0; } int ServiceExists(const char *name) { if(!services.empty()) { std::list::iterator end = services.end(); for(std::list::iterator i = services.begin(); i != end; ++i) if(!strcmp((*i)->getName(), name)) return 1; } return 0; } service::service(const char* name, SERVICE svc) { pService = svc; szName = strdup(name); } const char* service::getName() { return szName; } const SERVICE service::getService() { return pService; } service::~service() { free(szName); }