move aroudn bound functors
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Wed, 06 Sep 2006 14:56:13 +0200
changeset 73 a44becd5a5fc
parent 72 24d3f1f15334
child 74 93b151b87563
move aroudn bound functors
src/core/callback.h
--- a/src/core/callback.h	Wed Sep 06 14:53:11 2006 +0200
+++ b/src/core/callback.h	Wed Sep 06 14:56:13 2006 +0200
@@ -133,37 +133,6 @@
     T m_functor;
 };
 
-// an impl for Bound Functors:
-template <typename T, typename R, typename TX, typename T1, typename T2, typename T3, typename T4,typename T5>
-class BoundFunctorCallbackImpl : public CallbackImpl<R,T1,T2,T3,T4,T5> {
-public:
-    BoundFunctorCallbackImpl (T const &functor, TX a)
-        : m_functor (functor), m_a (a) {}
-    virtual ~BoundFunctorCallbackImpl () {}
-    R operator() (void) {
-        return m_functor (m_a);
-    }
-    R operator() (T1 a1) {
-        return m_functor (m_a,a1);
-    }
-    R operator() (T1 a1,T2 a2) {
-        return m_functor (m_a,a1,a2);
-    }
-    R operator() (T1 a1,T2 a2,T3 a3) {
-        return m_functor (m_a,a1,a2,a3);
-    }
-    R operator() (T1 a1,T2 a2,T3 a3,T4 a4) {
-        return m_functor (m_a,a1,a2,a3,a4);
-    }
-    R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) {
-        return m_functor (m_a,a1,a2,a3,a4,a5);
-    }
-private:
-    T m_functor;
-    TX m_a;
-};
-
-
 // an impl for pointer to member functions
 template <typename OBJ_PTR, typename MEM_PTR, typename R, typename T1, typename T2, typename T3, typename T4, typename T5>
 class MemPtrCallbackImpl : public CallbackImpl<R,T1,T2,T3,T4,T5> {
@@ -477,6 +446,42 @@
     return Callback<R,T1,T2,T3,T4,T5> ();
 }
 
+
+/**
+ * The following is experimental code. It works but we have
+ * not yet determined whether or not it is really useful and whether
+ * or not we really want to use it.
+ */
+// an impl for Bound Functors:
+template <typename T, typename R, typename TX, typename T1, typename T2, typename T3, typename T4,typename T5>
+class BoundFunctorCallbackImpl : public CallbackImpl<R,T1,T2,T3,T4,T5> {
+public:
+    BoundFunctorCallbackImpl (T const &functor, TX a)
+        : m_functor (functor), m_a (a) {}
+    virtual ~BoundFunctorCallbackImpl () {}
+    R operator() (void) {
+        return m_functor (m_a);
+    }
+    R operator() (T1 a1) {
+        return m_functor (m_a,a1);
+    }
+    R operator() (T1 a1,T2 a2) {
+        return m_functor (m_a,a1,a2);
+    }
+    R operator() (T1 a1,T2 a2,T3 a3) {
+        return m_functor (m_a,a1,a2,a3);
+    }
+    R operator() (T1 a1,T2 a2,T3 a3,T4 a4) {
+        return m_functor (m_a,a1,a2,a3,a4);
+    }
+    R operator() (T1 a1,T2 a2,T3 a3,T4 a4,T5 a5) {
+        return m_functor (m_a,a1,a2,a3,a4,a5);
+    }
+private:
+    T m_functor;
+    TX m_a;
+};
+
 template <typename R, typename TX, typename T1>
 Callback<R,T1> makeBoundCallback (R (*fnPtr) (TX,T1), TX a) {
     ReferenceList<CallbackImpl<R,T1,empty,empty,empty,empty>*> impl =