summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss123next@list.ru>2010-08-02 01:29:14 +0300
committerGluzskiy Alexandr <sss123next@list.ru>2010-08-02 01:29:14 +0300
commite81f9d9a479fd7851caa32ef6d8939ce246b901c (patch)
tree4f9e7fb5fbc4252ea887652f4574961e28c77b92 /core
parent952247ad9720ca579d2f6eac596896bc2cddfe6b (diff)
basic pluglink implementation //it may be completely broken
Diffstat (limited to 'core')
-rw-r--r--core/main.cpp31
1 files changed, 30 insertions, 1 deletions
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<service*>::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<service*>::iterator p = services.begin(); p != services.end(); p++)
+ if(!strcmp((*p)->getName(), name))
+ return 1;
+ return 0;
}
+