From 6485d75ff3ad16bbfa6f2ab1318ab99894954080 Mon Sep 17 00:00:00 2001 From: Memphiz Date: Wed, 20 Feb 2013 19:13:25 +0100 Subject: - added substrate.h - needed for hooking methods and ivars at runtime --- xbmc/osx/atv2/substrate.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 xbmc/osx/atv2/substrate.h diff --git a/xbmc/osx/atv2/substrate.h b/xbmc/osx/atv2/substrate.h new file mode 100644 index 0000000000..3cdb88b4bb --- /dev/null +++ b/xbmc/osx/atv2/substrate.h @@ -0,0 +1,31 @@ +#include +#include +#include +#ifdef __cplusplus +#define _default(x) = x +extern "C" { +#else +#define _default(x) +#endif +typedef const void *MSImageRef; +void MSHookFunction(void *symbol, void *replace, void **result); +void *MSFindSymbol(const void *image, const char *name); +MSImageRef MSGetImageByName(const char *file); + +#ifdef __APPLE__ +#ifdef __arm__ +IMP MSHookMessage(Class _class, SEL sel, IMP imp, const char *prefix _default(NULL)); +#endif +void MSHookMessageEx(Class _class, SEL sel, IMP imp, IMP *result); +#endif +#ifdef __cplusplus +} +#endif + +template Type_ &MSHookIvar(id self, const char *name) { + Ivar ivar(class_getInstanceVariable(object_getClass(self), name)); + void *pointer(ivar == NULL ? NULL : reinterpret_cast(self) + ivar_getOffset(ivar)); + return *reinterpret_cast(pointer); +} + + -- cgit v1.2.3