Index: /trunk/src/lib/shell/shell_command.h
===================================================================
--- /trunk/src/lib/shell/shell_command.h	(revision 5550)
+++ /trunk/src/lib/shell/shell_command.h	(revision 5551)
@@ -226,4 +226,28 @@
   }
 
+///////////////////////
+// FUNCTION POINTERS //
+///////////////////////
+#define ShellCommandFunctionPoiter0() \
+  void SHELLCOMMANDINCLASS(*functionPointer_0)();
+
+#define ShellCommandFunctionPoiter1(t1) \
+  void SHELLCOMMANDINCLASS(*functionPointer_1_##t1)(t1##_TYPE);
+
+#define ShellCommandFunctionPoiter2(t1, t2) \
+  void SHELLCOMMANDINCLASS(*functionPointer_2_##t1##_##t2)(t1##_TYPE, t2##_TYPE);
+
+
+#define ShellCommandFunctionPoiter3(t1, t2, t3) \
+  void SHELLCOMMANDINCLASS(*functionPointer_3_##t1##_##t2##_##t3)(t1##_TYPE, t2##_TYPE, t3##_TYPE);
+
+#define ShellCommandFunctionPoiter4(t1, t2, t3, t4) \
+  void SHELLCOMMANDINCLASS(*functionPointer_4_##t1##_##t2##_##t3##_##t4)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE);
+
+
+#define ShellCommandFunctionPoiter5(t1, t2, t3, t4, t5) \
+  void SHELLCOMMANDINCLASS(*functionPointer_5_##t1##_##t2##_##t3##_##t4##_##t5)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE, t5##_TYPE); \
+
+
 //////////////////
 // CONSTRUCTORS //
@@ -231,60 +255,54 @@
 //! creates a command that takes no parameters
 #define ShellCommandConstructor0() \
-  void SHELLCOMMANDINCLASS(*functionPointer_0)(); \
   SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)()) \
   : ShellCommandBase(commandName, className, 0) \
   { \
     this->functorType = SHELLCOMMANDTYPE; \
-    this->functionPointer_0 = function; \
+    this->fp.functionPointer_0 = function; \
   }
 
 //! creates a command that takes one parameter
 #define ShellCommandConstructor1(t1) \
-  void SHELLCOMMANDINCLASS(*functionPointer_1_##t1)(t1##_TYPE); \
   SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE), t1##_TYPE d1) \
   : ShellCommandBase(commandName, className, 1, t1##_PARAM, d1) \
   { \
     this->functorType = SHELLCOMMANDTYPE; \
-    this->functionPointer_1_##t1 = function; \
+    this->fp.functionPointer_1_##t1 = function; \
   }
 
 //! creates a command that takes two parameters
 #define ShellCommandConstructor2(t1,t2) \
-  void SHELLCOMMANDINCLASS(*functionPointer_2_##t1##_##t2)(t1##_TYPE, t2##_TYPE); \
   SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE), t1##_TYPE d1, t2##_TYPE d2) \
   : ShellCommandBase(commandName, className, 2, t1##_PARAM, d1, t2##_PARAM, d2) \
   { \
     this->functorType = SHELLCOMMANDTYPE; \
-    this->functionPointer_2_##t1##_##t2 = function; \
+    this->fp.functionPointer_2_##t1##_##t2 = function; \
   }
 
 //! creates a command that takes three parameter
 #define ShellCommandConstructor3(t1,t2,t3) \
-  void SHELLCOMMANDINCLASS(*functionPointer_3_##t1##_##t2##_##t3)(t1##_TYPE, t2##_TYPE, t3##_TYPE); \
   SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE), t1##_TYPE d1, t2##_TYPE d2, t3##_TYPE d3) \
   : ShellCommandBase(commandName, className, 3, t1##_PARAM, d1, t2##_PARAM, d2, t3##_PARAM, d3) \
   { \
     this->functorType = SHELLCOMMANDTYPE; \
-    this->functionPointer_3_##t1##_##t2##_##t3 = function; \
+    this->fp.functionPointer_3_##t1##_##t2##_##t3 = function; \
   }
 
 //! creates a command that takes four parameter
 #define ShellCommandConstructor4(t1,t2,t3,t4) \
-  void SHELLCOMMANDINCLASS(*functionPointer_4_##t1##_##t2##_##t3##_##t4)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE); \
   SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE), t1##_TYPE d1, t2##_TYPE d2, t3##_TYPE d3, t4##_TYPE d4) \
   : ShellCommandBase(commandName, className, 4, t1##_PARAM, d1, t2##_PARAM, d2, t3##_PARAM, d3, t4##_PARAM, d4) \
   { \
     this->functorType = SHELLCOMMANDTYPE; \
-    this->functionPointer_4_##t1##_##t2##_##t3##_##t4 = function; \
+    this->fp.functionPointer_4_##t1##_##t2##_##t3##_##t4 = function; \
   }
 
 //! creates a command that takes five parameter
 #define ShellCommandConstructor5(t1,t2,t3,t4,t5) \
-  void SHELLCOMMANDINCLASS(*functionPointer_5_##t1##_##t2##_##t3##_##t4##_##t5)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE, t5##_TYPE); \
   SHELLCOMMAND(const char* commandName, const char* className, void SHELLCOMMANDINCLASS(*function)(t1##_TYPE, t2##_TYPE, t3##_TYPE, t4##_TYPE, t5##_TYPE), t1##_TYPE d1, t2##_TYPE d2, t3##_TYPE d3, t4##_TYPE d4, t5##_TYPE d5) \
   : ShellCommandBase(commandName, className, 5, t1##_PARAM, d1, t2##_PARAM, d2, t3##_PARAM, d3, t4##_PARAM, d4, t5##_PARAM, d5) \
   { \
     this->functorType = SHELLCOMMANDTYPE; \
-    this->functionPointer_5_##t1##_##t2##_##t3##_##t4##_##t5 = function; \
+    this->fp.functionPointer_5_##t1##_##t2##_##t3##_##t4##_##t5 = function; \
   }
 
@@ -337,5 +355,5 @@
 #undef SHELLCOMMANDEXECUTER
 #endif
-#define SHELLCOMMANDEXECUTER(nameExt)      (dynamic_cast<T*>(object)->*functionPointer##nameExt)
+#define SHELLCOMMANDEXECUTER(nameExt)      (dynamic_cast<T*>(object)->*(fp.functionPointer##nameExt))
 #ifdef SHELLCOMMANDINCLASS
 #undef SHELLCOMMANDINCLASS
@@ -353,4 +371,11 @@
 
   private:
+//! FUNCTOR_LIST is the List of FunctionPointers
+    union FunctionPointers {
+#define FUNCTOR_LIST(x) ShellCommandFunctionPoiter ## x
+#include "functor_list.h"
+#undef FUNCTOR_LIST
+    } fp;
+
 //! FUNCTOR_LIST is the List of CommandConstructors
 #define FUNCTOR_LIST(x) ShellCommandConstructor ## x
@@ -382,5 +407,5 @@
 #undef SHELLCOMMANDEXECUTER
 #endif
-#define SHELLCOMMANDEXECUTER(nameExt)     functionPointer##nameExt
+#define SHELLCOMMANDEXECUTER(nameExt)     fp.functionPointer##nameExt
 #ifdef SHELLCOMMANDINCLASS
 #undef SHELLCOMMANDINCLASS
@@ -398,4 +423,11 @@
 
   private:
+//! FUNCTOR_LIST is the List of FunctionPointers
+    union FunctionPointers {
+#define FUNCTOR_LIST(x) ShellCommandFunctionPoiter ## x
+#include "functor_list.h"
+#undef FUNCTOR_LIST
+    } fp;
+
 //! FUNCTOR_LIST is the List of CommandConstructors
 #define FUNCTOR_LIST(x) ShellCommandConstructor ## x
Index: /trunk/src/lib/util/multi_type.h
===================================================================
--- /trunk/src/lib/util/multi_type.h	(revision 5550)
+++ /trunk/src/lib/util/multi_type.h	(revision 5551)
@@ -75,5 +75,5 @@
   private:
     MT_Type             type;
-    union Type
+    union MultiTypeValue
     {
       bool              Bool;
