[Orxonox-commit 1107] r5828 - code/branches/core5/src/libraries/core

landauf at orxonox.net landauf at orxonox.net
Mon Sep 28 21:14:01 CEST 2009


Author: landauf
Date: 2009-09-28 21:14:00 +0200 (Mon, 28 Sep 2009)
New Revision: 5828

Modified:
   code/branches/core5/src/libraries/core/Functor.h
Log:
Overloaded createFunctor for FunctorMember<T> with a second argument "T* object" which serves as the object for a member-function.

These are equivalent:
 - createFunctor(&A::f, pointer);
 - createFunctor(&A::f)->setObject(pointer);
 - FunctorMember<A>* functor = createFunctor(&A::f); functor->setObject(pointer);


Modified: code/branches/core5/src/libraries/core/Functor.h
===================================================================
--- code/branches/core5/src/libraries/core/Functor.h	2009-09-28 19:10:04 UTC (rev 5827)
+++ code/branches/core5/src/libraries/core/Functor.h	2009-09-28 19:14:00 UTC (rev 5828)
@@ -433,6 +433,23 @@
     inline FunctorConstMember##returnvalue##numparams FUNCTOR_TEMPLATE_CLASSES(1, returnvalue, numparams)* createFunctor(FUNCTOR_FUNCTION_RETURNVALUE(returnvalue) (T::*functionPointer)(FUNCTOR_FUNCTION_PARAMS(numparams)) const) \
     { \
         return new FunctorConstMember##returnvalue##numparams FUNCTOR_TEMPLATE_CLASSES(1, returnvalue, numparams) (functionPointer); \
+    } \
+    \
+    FUNCTOR_TEMPLATE(1, returnvalue, numparams) \
+    inline FunctorMember##returnvalue##numparams FUNCTOR_TEMPLATE_CLASSES(1, returnvalue, numparams)* createFunctor(FUNCTOR_FUNCTION_RETURNVALUE(returnvalue) (T::*functionPointer)(FUNCTOR_FUNCTION_PARAMS(numparams)), T* object) \
+    { \
+        FunctorMember##returnvalue##numparams FUNCTOR_TEMPLATE_CLASSES(1, returnvalue, numparams)* functor = new FunctorMember##returnvalue##numparams FUNCTOR_TEMPLATE_CLASSES(1, returnvalue, numparams) (functionPointer); \
+        functor->setObject(object); \
+        return functor; \
+    } \
+    \
+    \
+    FUNCTOR_TEMPLATE(1, returnvalue, numparams) \
+    inline FunctorConstMember##returnvalue##numparams FUNCTOR_TEMPLATE_CLASSES(1, returnvalue, numparams)* createFunctor(FUNCTOR_FUNCTION_RETURNVALUE(returnvalue) (T::*functionPointer)(FUNCTOR_FUNCTION_PARAMS(numparams)) const, T* object) \
+    { \
+        FunctorConstMember##returnvalue##numparams FUNCTOR_TEMPLATE_CLASSES(1, returnvalue, numparams)* functor = new FunctorConstMember##returnvalue##numparams FUNCTOR_TEMPLATE_CLASSES(1, returnvalue, numparams) (functionPointer); \
+        functor->setObject(object); \
+        return functor; \
     }
 
 




More information about the Orxonox-commit mailing list