Index: trunk/src/lib/util/executor/executor_functional.h
===================================================================
--- trunk/src/lib/util/executor/executor_functional.h	(revision 7718)
+++ trunk/src/lib/util/executor/executor_functional.h	(revision 7719)
@@ -70,5 +70,5 @@
  #endif /* EXECUTOR_FUNCTIONAL_USE_CONST */
 
- #undef __EXECUTOR_FUNCTIONAL_FUNCTION_EXEC
+#undef __EXECUTOR_FUNCTIONAL_FUNCTION_EXEC
  #define __EXECUTOR_FUNCTIONAL_FUNCTION_EXEC       functionPointer
  #undef __EXECUTOR_FUNCTIONAL_NAME
@@ -77,5 +77,5 @@
  #define __EXECUTOR_FUNCTIONAL_FUNCTION_POINTER    *functionPointer
 
- #undef EXECUTOR_FUNCTIONAL_USE_STATIC
+#undef EXECUTOR_FUNCTIONAL_USE_STATIC
 #endif /* EXECUTOR_FUNCTIONAL_USE_STATIC */
 
@@ -98,10 +98,11 @@
   };
 
-  virtual Executor* clone() const {
+  virtual Executor* clone() const
+  {
     return new __EXECUTOR_FUNCTIONAL_NAME(0)<T>(this->functionPointer);
   };
 };
 
-
+//! SINGLE VALUE
 template<class T, typename type0> class __EXECUTOR_FUNCTIONAL_NAME(1) : public Executor
 {
@@ -129,10 +130,11 @@
   };
 
-  virtual Executor* clone() const {
+  virtual Executor* clone() const
+  {
     return  new __EXECUTOR_FUNCTIONAL_NAME(1)<T, type0>(this->functionPointer);
   };
 };
 
-/// DOUBLE PENETRATION
+//! DOUBLE VALUE
 template<class T, typename type0, typename type1> class __EXECUTOR_FUNCTIONAL_NAME(2) : public Executor
 {
@@ -155,5 +157,6 @@
   };
 
-  virtual Executor* clone() const {
+  virtual Executor* clone() const
+  {
     return new __EXECUTOR_FUNCTIONAL_NAME(2)<T, type0, type1>(this->functionPointer);
   };
@@ -161,6 +164,93 @@
 
 
-
-/// HACK !! THESE WILL BE RESET AGAIN !!
+//! TRIPPLE VALUE
+template<class T, typename type0, typename type1, typename type2> class __EXECUTOR_FUNCTIONAL_NAME(3) : public Executor
+{
+private:
+  void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2) __EXECUTOR_FUNCTIONAL_CONST;
+
+public:
+  __EXECUTOR_FUNCTIONAL_NAME(3) (void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2) __EXECUTOR_FUNCTIONAL_CONST)
+      : Executor(ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>())
+  {
+    this->functorType = Executor_Objective;
+    this->functionPointer = functionPointer;
+  };
+
+  virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const
+  {
+    (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
+      fromString<type0>(sub[0], getDefault<type0>(this->defaultValue, 0)),
+      fromString<type1>(sub[1], getDefault<type1>(this->defaultValue, 1)),
+      fromString<type2>(sub[2], getDefault<type2>(this->defaultValue, 2)));
+  };
+
+  virtual Executor* clone() const
+  {
+    return new __EXECUTOR_FUNCTIONAL_NAME(3)<T, type0, type1, type2>(this->functionPointer);
+  };
+};
+
+
+
+//! QUADRUPPEL VALUE
+template<class T, typename type0, typename type1, typename type2, typename type3> class __EXECUTOR_FUNCTIONAL_NAME(4) : public Executor
+{
+private:
+  void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2, type3) __EXECUTOR_FUNCTIONAL_CONST;
+
+public:
+  __EXECUTOR_FUNCTIONAL_NAME(4) (void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2, type3) __EXECUTOR_FUNCTIONAL_CONST)
+  : Executor(ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>())
+  {
+    this->functorType = Executor_Objective;
+    this->functionPointer = functionPointer;
+  };
+
+  virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const
+  {
+    (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
+      fromString<type0>(sub[0], getDefault<type0>(this->defaultValue, 0)),
+      fromString<type1>(sub[1], getDefault<type1>(this->defaultValue, 1)),
+      fromString<type2>(sub[2], getDefault<type2>(this->defaultValue, 2)),
+      fromString<type3>(sub[3], getDefault<type3>(this->defaultValue, 3)));
+  };
+
+  virtual Executor* clone() const
+  {
+    return new __EXECUTOR_FUNCTIONAL_NAME(4)<T, type0, type1, type2, type3>(this->functionPointer);
+  };
+};
+
+//! CHINQUE VALUE
+template<class T, typename type0, typename type1, typename type2, typename type3, typename type4> class __EXECUTOR_FUNCTIONAL_NAME(5) : public Executor
+{
+  private:
+    void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2, type3, type4) __EXECUTOR_FUNCTIONAL_CONST;
+
+  public:
+    __EXECUTOR_FUNCTIONAL_NAME(5) (void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2, type3, type4) __EXECUTOR_FUNCTIONAL_CONST)
+  : Executor(ExecutorParamType<type0>(), ExecutorParamType<type1>(), ExecutorParamType<type2>(), ExecutorParamType<type3>(), ExecutorParamType<type4>())
+    {
+      this->functorType = Executor_Objective;
+      this->functionPointer = functionPointer;
+    };
+
+    virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const
+    {
+      (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(
+          fromString<type0>(sub[0], getDefault<type0>(this->defaultValue, 0)),
+      fromString<type1>(sub[1], getDefault<type1>(this->defaultValue, 1)),
+      fromString<type2>(sub[2], getDefault<type2>(this->defaultValue, 2)),
+      fromString<type3>(sub[3], getDefault<type3>(this->defaultValue, 3)),
+      fromString<type4>(sub[4], getDefault<type4>(this->defaultValue, 4)));
+    };
+
+    virtual Executor* clone() const
+    {
+      return new __EXECUTOR_FUNCTIONAL_NAME(5)<T, type0, type1, type2, type3, type4>(this->functionPointer);
+    };
+};
+
 
 
@@ -183,7 +273,21 @@
 }
 
-#define EXECUTOR_FUNCTIONAL_CREATOR3(type0, type1, type2)
-#define EXECUTOR_FUNCTIONAL_CREATOR4(type0, type1, type2, type3)
-#define EXECUTOR_FUNCTIONAL_CREATOR5(type0, type1, type2, type3, type4)
+#define EXECUTOR_FUNCTIONAL_CREATOR3(type0, type1, type2) \
+template<class T> Executor* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0##_TYPE, type1##_TYPE, type2##_TYPE) __EXECUTOR_FUNCTIONAL_CONST) \
+{ \
+  return new __EXECUTOR_FUNCTIONAL_NAME(3)<T, type0##_TYPE, type1##_TYPE, type2##_TYPE>(functionPointer); \
+}
+
+#define EXECUTOR_FUNCTIONAL_CREATOR4(type0, type1, type2, type3) \
+template<class T> Executor* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0##_TYPE, type1##_TYPE, type2##_TYPE, type3##_TYPE) __EXECUTOR_FUNCTIONAL_CONST) \
+{ \
+  return new __EXECUTOR_FUNCTIONAL_NAME(4)<T, type0##_TYPE, type1##_TYPE, type2##_TYPE, type3##_TYPE>(functionPointer); \
+}
+
+#define EXECUTOR_FUNCTIONAL_CREATOR5(type0, type1, type2, type3, type4) \
+template<class T> Executor* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0##_TYPE, type1##_TYPE, type2##_TYPE, type3##_TYPE, type4##_TYPE) __EXECUTOR_FUNCTIONAL_CONST) \
+{ \
+    return new __EXECUTOR_FUNCTIONAL_NAME(5)<T, type0##_TYPE, type1##_TYPE, type2##_TYPE, type3##_TYPE, type4##_TYPE>(functionPointer); \
+}
 
 
