From 7890dccf61ba5e92d76e79c121b926ac515d6747 Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Fri, 15 Oct 2010 08:53:21 +0300 Subject: services --- core/services.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 core/services.cpp (limited to 'core/services.cpp') diff --git a/core/services.cpp b/core/services.cpp new file mode 100644 index 0000000..56ee05e --- /dev/null +++ b/core/services.cpp @@ -0,0 +1,54 @@ +#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); +} -- cgit v1.2.3