]> git.saurik.com Git - ldid.git/commitdiff
Move Functor implementation to header for the API.
authorJay Freeman (saurik) <saurik@saurik.com>
Sun, 27 Sep 2015 22:14:07 +0000 (15:14 -0700)
committerJay Freeman (saurik) <saurik@saurik.com>
Sun, 27 Sep 2015 22:14:07 +0000 (15:14 -0700)
ldid.cpp
ldid.hpp

index 9ed5792ac3560afee0cc351be40a2e1354f3fcc6..0cb8dd2f74108237a60b317768601ca7be143d92 100644 (file)
--- a/ldid.cpp
+++ b/ldid.cpp
@@ -923,43 +923,6 @@ class Map {
     }
 };
 
-// I wish Apple cared about providing quality toolchains :/
-
-template <typename Function_>
-class Functor;
-
-template <typename Type_, typename... Args_>
-class Functor<Type_ (Args_...)> {
-  public:
-    virtual Type_ operator ()(Args_... args) const = 0;
-};
-
-template <typename Function_>
-class FunctorImpl;
-
-template <typename Value_, typename Type_, typename... Args_>
-class FunctorImpl<Type_ (Value_::*)(Args_...) const> :
-    public Functor<Type_ (Args_...)>
-{
-  private:
-    const Value_ *value_;
-
-  public:
-    FunctorImpl(const Value_ &value) :
-        value_(&value)
-    {
-    }
-
-    virtual Type_ operator ()(Args_... args) const {
-        return (*value_)(args...);
-    }
-};
-
-template <typename Function_>
-FunctorImpl<decltype(&Function_::operator())> fun(const Function_ &value) {
-    return value;
-}
-
 namespace ldid {
 
 static void Allocate(void *idata, size_t isize, std::streambuf &output, const Functor<size_t (size_t)> &allocate, const Functor<size_t (std::streambuf &output, size_t, const std::string &, const char *)> &save) {
index ad85f0354251102d63a5c727de81904d20145e99..331c4b050fc65232bc84f0574dc067513fd0e915 100644 (file)
--- a/ldid.hpp
+++ b/ldid.hpp
@@ -8,6 +8,43 @@
 
 namespace ldid {
 
+// I wish Apple cared about providing quality toolchains :/
+
+template <typename Function_>
+class Functor;
+
+template <typename Type_, typename... Args_>
+class Functor<Type_ (Args_...)> {
+  public:
+    virtual Type_ operator ()(Args_... args) const = 0;
+};
+
+template <typename Function_>
+class FunctorImpl;
+
+template <typename Value_, typename Type_, typename... Args_>
+class FunctorImpl<Type_ (Value_::*)(Args_...) const> :
+    public Functor<Type_ (Args_...)>
+{
+  private:
+    const Value_ *value_;
+
+  public:
+    FunctorImpl(const Value_ &value) :
+        value_(&value)
+    {
+    }
+
+    virtual Type_ operator ()(Args_... args) const {
+        return (*value_)(args...);
+    }
+};
+
+template <typename Function_>
+FunctorImpl<decltype(&Function_::operator())> fun(const Function_ &value) {
+    return value;
+}
+
 typedef std::map<uint32_t, std::string> Slots;
 
 void Sign(void *idata, size_t isize, std::streambuf &output, const std::string &name, const std::string &entitlements, const std::string &key, const Slots &slots);