Skip to content

Commit a6acddf

Browse files
committed
Add templated handler for manual hooks
1 parent 36b9858 commit a6acddf

7 files changed

+741
-21
lines changed

core/sourcehook/sourcehook.cpp

+36
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,18 @@ namespace SourceHook
9797

9898
int CSourceHookImpl::AddHook(Plugin plug, AddHookMode mode, void *iface, int thisptr_offs, HookManagerPubFunc myHookMan,
9999
ISHDelegate *handler, bool post)
100+
{
101+
return AddHook(plug, mode, iface, thisptr_offs, HookManagerPubFuncHandler(myHookMan), handler, post);
102+
}
103+
104+
int CSourceHookImpl::AddHook(Plugin plug, AddHookMode mode, void *iface, int thisptr_offs, IHookManagerMemberFunc* myHookMan,
105+
ISHDelegate *handler, bool post)
106+
{
107+
return AddHook(plug, mode, iface, thisptr_offs, HookManagerPubFuncHandler(myHookMan), handler, post);
108+
}
109+
110+
int CSourceHookImpl::AddHook(Plugin plug, AddHookMode mode, void *iface, int thisptr_offs, const HookManagerPubFuncHandler &myHookMan,
111+
ISHDelegate *handler, bool post)
100112
{
101113
if (mode != Hook_Normal && mode != Hook_VP && mode != Hook_DVP)
102114
return 0;
@@ -172,6 +184,18 @@ namespace SourceHook
172184

173185
bool CSourceHookImpl::RemoveHook(Plugin plug, void *iface, int thisptr_offs, HookManagerPubFunc myHookMan,
174186
ISHDelegate *handler, bool post)
187+
{
188+
return RemoveHook(plug, iface, thisptr_offs, HookManagerPubFuncHandler(myHookMan), handler, post);
189+
}
190+
191+
bool CSourceHookImpl::RemoveHook(Plugin plug, void *iface, int thisptr_offs, IHookManagerMemberFunc* myHookMan,
192+
ISHDelegate *handler, bool post)
193+
{
194+
return RemoveHook(plug, iface, thisptr_offs, HookManagerPubFuncHandler(myHookMan), handler, post);
195+
}
196+
197+
bool CSourceHookImpl::RemoveHook(Plugin plug, void *iface, int thisptr_offs, const HookManagerPubFuncHandler &myHookMan,
198+
ISHDelegate *handler, bool post)
175199
{
176200
// Get info about hook manager and compute adjustediface
177201
CHookManager tmpHookMan(plug, myHookMan);
@@ -417,6 +441,18 @@ namespace SourceHook
417441
}
418442

419443
void CSourceHookImpl::RemoveHookManager(Plugin plug, HookManagerPubFunc pubFunc)
444+
{
445+
// Find the hook manager
446+
RemoveHookManager(plug, HookManagerPubFuncHandler(pubFunc));
447+
}
448+
449+
void CSourceHookImpl::RemoveHookManager(Plugin plug, IHookManagerMemberFunc* pubFunc)
450+
{
451+
// Find the hook manager
452+
RemoveHookManager(plug, HookManagerPubFuncHandler(pubFunc));
453+
}
454+
455+
void CSourceHookImpl::RemoveHookManager(Plugin plug, const HookManagerPubFuncHandler &pubFunc)
420456
{
421457
// Find the hook manager
422458
CHookManList::iterator hookman_iter = m_HookManList.find(CHookManager::Descriptor(plug, pubFunc));

0 commit comments

Comments
 (0)