summaryrefslogtreecommitdiff
path: root/Substrate.hpp
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2015-06-26 04:47:18 -0700
committerJay Freeman (saurik) <saurik@saurik.com>2015-06-26 04:47:18 -0700
commita09f7a4894d2dde0ac8820993f3d51ba0fe36810 (patch)
treec6fc98e35c1fb6563a618604c10a1b09adee737f /Substrate.hpp
parent62664aee74d60bfac5b6497715b6e6020702373e (diff)
Remove dependency on Substrate to have its macros.
Diffstat (limited to 'Substrate.hpp')
-rw-r--r--Substrate.hpp38
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