From e81f9d9a479fd7851caa32ef6d8939ce246b901c Mon Sep 17 00:00:00 2001 From: Gluzskiy Alexandr Date: Mon, 2 Aug 2010 01:29:14 +0300 Subject: basic pluglink implementation //it may be completely broken --- core/main.cpp | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'core/main.cpp') diff --git a/core/main.cpp b/core/main.cpp index bcb0e74..44add56 100644 --- a/core/main.cpp +++ b/core/main.cpp @@ -104,12 +104,41 @@ plugin::~plugin() FreeLibrary(hModule); free(szPluginName); } +service::service(const char *name, const SERVICE &service) +{ + szName = new char [strlen(name)+1]; + strcpy(szName, name); + *pService = service; +} +const char *service::getName() +{ + return szName; +} +const SERVICE *service::getService() +{ + return pService; +} INT_PTR CallService(const char *name, WPARAM w, LPARAM l) { + for(list::iterator p = services.begin(); p != services.end(); p++) + { + if(!strcmp((*p)->getName(), name)) + { + SERVICE s = *(*p)->getService(); + return s(w, l); + } + } + return 0; } -HANDLE CreateServiceFunction(const char *name, SERVICE pService) +HANDLE CreateServiceFunction(const char *name, const SERVICE pService) { + services.push_back(new service(name, pService)); } int ServiceExists(const char *name) { + for(list::iterator p = services.begin(); p != services.end(); p++) + if(!strcmp((*p)->getName(), name)) + return 1; + return 0; } + -- cgit v1.2.3