diff options
author | Jay Freeman (saurik) <saurik@saurik.com> | 2015-06-26 04:47:18 -0700 |
---|---|---|
committer | Jay Freeman (saurik) <saurik@saurik.com> | 2015-06-26 04:47:18 -0700 |
commit | a09f7a4894d2dde0ac8820993f3d51ba0fe36810 (patch) | |
tree | c6fc98e35c1fb6563a618604c10a1b09adee737f /Substrate.hpp | |
parent | 62664aee74d60bfac5b6497715b6e6020702373e (diff) |
Remove dependency on Substrate to have its macros.
Diffstat (limited to 'Substrate.hpp')
-rw-r--r-- | Substrate.hpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Substrate.hpp b/Substrate.hpp new file mode 100644 index 0000000..9826b56 --- /dev/null +++ b/Substrate.hpp @@ -0,0 +1,38 @@ +/* Cydia - iPhone UIKit Front-End for Debian APT + * Copyright (C) 2008-2013 Jay Freeman (saurik) +*/ + +/* GNU General Public License, Version 3 {{{ */ +/* + * Cydia is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * Cydia is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Cydia. If not, see <http://www.gnu.org/licenses/>. +**/ +/* }}} */ + +#ifndef Substrate_HPP +#define Substrate_HPP + +#include <objc/runtime.h> + +template <typename Type_> +static inline Type_ &MSHookIvar(id self, const char *name) { + Ivar ivar(class_getInstanceVariable(object_getClass(self), name)); + void *pointer(ivar == NULL ? NULL : reinterpret_cast<char *>(self) + ivar_getOffset(ivar)); + return *reinterpret_cast<Type_ *>(pointer); +} + +#define MSHook(type, name, args...) \ + static type (*_ ## name)(args); \ + static type $ ## name(args) + +#endif//Substrate_HPP |