summaryrefslogtreecommitdiff
path: root/include/m_protoint.h
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2013-07-08 22:10:14 +0000
committerGeorge Hazan <george.hazan@gmail.com>2013-07-08 22:10:14 +0000
commitbb952e431866d131bae95c08e579ec8a00f00343 (patch)
tree60881668cf328b50906346c5f66ce47da2d9ad88 /include/m_protoint.h
parentc181af64bab27eb50e684c64c0a3caa49f8bbe39 (diff)
core protocol helpers for creating protocol evengs, services & threads
git-svn-id: http://svn.miranda-ng.org/main/trunk@5286 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'include/m_protoint.h')
-rw-r--r--include/m_protoint.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/include/m_protoint.h b/include/m_protoint.h
index ac700dfbad..336a5eecba 100644
--- a/include/m_protoint.h
+++ b/include/m_protoint.h
@@ -106,4 +106,36 @@ struct PROTO_INTERFACE : public MZeroedObject
virtual int __cdecl OnEvent(PROTOEVENTTYPE iEventType, WPARAM wParam, LPARAM lParam) = 0;
};
+template<class T> class PROTO : public PROTO_INTERFACE
+{
+
+public:
+ __forceinline PROTO(const char *szProto, const TCHAR *tszUserName)
+ {
+ ::ProtoConstructor(this, szProto, tszUserName);
+ }
+
+ __forceinline ~PROTO()
+ {
+ ::ProtoDestructor(this);
+ }
+
+ typedef int (__cdecl T::*MyEventFunc)(WPARAM, LPARAM);
+ void __forceinline HookEvent(const char* name, MyEventFunc pFunc)
+ { ::ProtoHookEvent(this, name, (ProtoEventFunc)pFunc); }
+
+ typedef void (__cdecl T::*MyThreadFunc)(void*);
+ void __forceinline ForkThread(MyThreadFunc pFunc, void *param)
+ { ::ProtoForkThread(this, (ProtoThreadFunc)pFunc, param); }
+ HANDLE __forceinline ForkThreadEx(MyThreadFunc pFunc, void *param, UINT *pThreadId)
+ { return ::ProtoForkThreadEx(this, (ProtoThreadFunc)pFunc, param, pThreadId); }
+
+ typedef INT_PTR (__cdecl T::*MyServiceFunc)(WPARAM, LPARAM);
+ void __forceinline CreateService(const char *name, MyServiceFunc pFunc)
+ { ::ProtoCreateService(this, name, (ProtoServiceFunc)pFunc); }
+
+ typedef INT_PTR (__cdecl T::*MyServiceFuncParam)(WPARAM, LPARAM, LPARAM);
+ void __forceinline CreateServiceParam(const char *name, MyServiceFuncParam pFunc, LPARAM param)
+ { ::ProtoCreateServiceParam(this, name, (ProtoServiceFuncParam)pFunc, param); }
+};
#endif // M_PROTOINT_H__