Index: trunk/src/Makefile.am
===================================================================
--- trunk/src/Makefile.am	(revision 5140)
+++ trunk/src/Makefile.am	(revision 5141)
@@ -82,4 +82,5 @@
                   lib/util/substring.cc \
                   lib/util/color.cc \
+                  lib/util/helper_functions.cc \
                   lib/math/vector.cc \
                   lib/math/curve.cc \
@@ -157,4 +158,5 @@
                  lib/util/list.h \
                  lib/util/color.h \
+                 lib/util/helper_functions.h \
                  lib/math/vector.h \
                  lib/math/curve.h \
Index: trunk/src/Makefile.in
===================================================================
--- trunk/src/Makefile.in	(revision 5140)
+++ trunk/src/Makefile.in	(revision 5141)
@@ -81,6 +81,6 @@
 	orxonox-class_list.$(OBJEXT) orxonox-ini_parser.$(OBJEXT) \
 	orxonox-substring.$(OBJEXT) orxonox-color.$(OBJEXT) \
-	orxonox-vector.$(OBJEXT) orxonox-curve.$(OBJEXT) \
-	orxonox-glmenu_imagescreen.$(OBJEXT) \
+	orxonox-helper_functions.$(OBJEXT) orxonox-vector.$(OBJEXT) \
+	orxonox-curve.$(OBJEXT) orxonox-glmenu_imagescreen.$(OBJEXT) \
 	orxonox-benchmark.$(OBJEXT)
 orxonox_OBJECTS = $(am_orxonox_OBJECTS)
@@ -109,4 +109,5 @@
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-glmenu_imagescreen.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-graphics_engine.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/orxonox-helper_functions.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-ini_parser.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-light.Po \
@@ -342,4 +343,5 @@
                   lib/util/substring.cc \
                   lib/util/color.cc \
+                  lib/util/helper_functions.cc \
                   lib/math/vector.cc \
                   lib/math/curve.cc \
@@ -417,4 +419,5 @@
                  lib/util/list.h \
                  lib/util/color.h \
+                 lib/util/helper_functions.h \
                  lib/math/vector.h \
                  lib/math/curve.h \
@@ -519,4 +522,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-glmenu_imagescreen.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-graphics_engine.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-helper_functions.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-ini_parser.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-light.Po@am__quote@
@@ -1369,4 +1373,20 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonox-color.obj `if test -f 'lib/util/color.cc'; then $(CYGPATH_W) 'lib/util/color.cc'; else $(CYGPATH_W) '$(srcdir)/lib/util/color.cc'; fi`
+
+orxonox-helper_functions.o: lib/util/helper_functions.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonox-helper_functions.o -MD -MP -MF "$(DEPDIR)/orxonox-helper_functions.Tpo" -c -o orxonox-helper_functions.o `test -f 'lib/util/helper_functions.cc' || echo '$(srcdir)/'`lib/util/helper_functions.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonox-helper_functions.Tpo" "$(DEPDIR)/orxonox-helper_functions.Po"; else rm -f "$(DEPDIR)/orxonox-helper_functions.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/util/helper_functions.cc' object='orxonox-helper_functions.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonox-helper_functions.Po' tmpdepfile='$(DEPDIR)/orxonox-helper_functions.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonox-helper_functions.o `test -f 'lib/util/helper_functions.cc' || echo '$(srcdir)/'`lib/util/helper_functions.cc
+
+orxonox-helper_functions.obj: lib/util/helper_functions.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonox-helper_functions.obj -MD -MP -MF "$(DEPDIR)/orxonox-helper_functions.Tpo" -c -o orxonox-helper_functions.obj `if test -f 'lib/util/helper_functions.cc'; then $(CYGPATH_W) 'lib/util/helper_functions.cc'; else $(CYGPATH_W) '$(srcdir)/lib/util/helper_functions.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonox-helper_functions.Tpo" "$(DEPDIR)/orxonox-helper_functions.Po"; else rm -f "$(DEPDIR)/orxonox-helper_functions.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/util/helper_functions.cc' object='orxonox-helper_functions.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonox-helper_functions.Po' tmpdepfile='$(DEPDIR)/orxonox-helper_functions.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonox-helper_functions.obj `if test -f 'lib/util/helper_functions.cc'; then $(CYGPATH_W) 'lib/util/helper_functions.cc'; else $(CYGPATH_W) '$(srcdir)/lib/util/helper_functions.cc'; fi`
 
 orxonox-vector.o: lib/math/vector.cc
Index: trunk/src/defs/class_id.h
===================================================================
--- trunk/src/defs/class_id.h	(revision 5140)
+++ trunk/src/defs/class_id.h	(revision 5141)
@@ -194,4 +194,5 @@
   CL_NUMBER                     =    0x00000b0c,
   CL_FAST_FACTORY               =    0x00000c01,
+  CL_SHELL_COMMAND              =    0x00000c02,
 
 
Index: trunk/src/lib/util/helper_functions.cc
===================================================================
--- trunk/src/lib/util/helper_functions.cc	(revision 5141)
+++ trunk/src/lib/util/helper_functions.cc	(revision 5141)
@@ -0,0 +1,69 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "helper_functions.h"
+#include "stdlibincl.h"
+
+using namespace std;
+
+/**
+ * checks if the input was a Bool
+ * @param BOOL a String that holds a bool: must be one of those: 1,0,true,false,TRUE,FALSE
+ * @param defaultValue a default value that is set, if BOOL is corrupt
+ * @return returns the bool, if BOOL was correct otherwise defaultValue
+ */
+bool isBool(const char* BOOL, bool defaultValue)
+{
+  if(!strcmp(BOOL, "1") || !strcmp( BOOL,"true") || !strcmp(BOOL,"TRUE"))
+    return true;
+  else if (!strcmp(BOOL, "0") || !strcmp( BOOL,"false") || !strcmp(BOOL,"FALSE"))
+    return false;
+  else
+    return defaultValue;
+
+}
+
+int isInt(const char* INT, int defaultValue)
+{
+  char* endPtr = NULL;
+  int result = strtol(INT, &endPtr, 10);
+
+  if ( endPtr >= INT && endPtr < INT + strlen(INT))
+    return defaultValue;
+  else
+    return result;
+}
+
+float isFloat(const char* FLOAT, float defaultValue)
+{
+  char* endPtr = NULL;
+  double result = strtod(FLOAT, &endPtr);
+
+  if ( endPtr >= FLOAT && endPtr < FLOAT + strlen(FLOAT))
+    return defaultValue;
+  else
+    return result;
+}
+
+
+const char* isString(const char* STRING, const char* defaultValue)
+{
+  if (STRING != NULL)
+    return STRING;
+  else
+    return defaultValue;
+}
Index: trunk/src/lib/util/helper_functions.h
===================================================================
--- trunk/src/lib/util/helper_functions.h	(revision 5141)
+++ trunk/src/lib/util/helper_functions.h	(revision 5141)
@@ -0,0 +1,19 @@
+/*!
+ * @file helper_functions.h
+ * @brief Definition of some minor helper-functions
+*/
+
+#ifndef _HELPER_FUNCTIONS_H
+#define _HELPER_FUNCTIONS_H
+
+// FORWARD DECLARATION
+
+/***********************
+*** HELPER FUNCTIONS ***
+***********************/
+bool          isBool(const char* BOOL, bool defaultValue);
+int           isInt(const char* INT, int defaultValue);
+float         isFloat(const char* FLOAT, float defaultValue);
+const char*   isString(const char* STRING, const char* defaultValue);
+
+#endif /* _HELPER_FUNCTIONS_H */
Index: trunk/src/util/loading/load_param.cc
===================================================================
--- trunk/src/util/loading/load_param.cc	(revision 5140)
+++ trunk/src/util/loading/load_param.cc	(revision 5141)
@@ -112,58 +112,4 @@
   }
 }
-
-/**
- * checks if the input was a Bool
- * @param BOOL a String that holds a bool: must be one of those: 1,0,true,false,TRUE,FALSE
- * @param defaultValue a default value that is set, if BOOL is corrupt
- * @return returns the bool, if BOOL was correct otherwise defaultValue
- */
-bool isBool(const char* BOOL, bool defaultValue)
-{
-  if(!strcmp(BOOL, "1") || !strcmp( BOOL,"true") || !strcmp(BOOL,"TRUE"))
-    return true;
-  else if (!strcmp(BOOL, "0") || !strcmp( BOOL,"false") || !strcmp(BOOL,"FALSE"))
-    return false;
-  else
-    return defaultValue;
-
-}
-
-int isInt(const char* INT, int defaultValue)
-{
-  char* endPtr = NULL;
-  int result = strtol(INT, &endPtr, 10);
-
-  if ( endPtr >= INT && endPtr < INT + strlen(INT))
-    return defaultValue;
-  else
-    return result;
-}
-
-float isFloat(const char* FLOAT, float defaultValue)
-{
-  char* endPtr = NULL;
-  double result = strtod(FLOAT, &endPtr);
-
-  if ( endPtr >= FLOAT && endPtr < FLOAT + strlen(FLOAT))
-    return defaultValue;
-  else
-    return result;
-}
-
-const Vector& isVector(const char* VECTOR, const Vector& defaultValue)
-{
-
-
-}
-
-const char* isString(const char* STRING, const char* defaultValue)
-{
-  if (STRING != NULL)
-    return STRING;
-  else
-    return defaultValue;
-}
-
 
 /**
Index: trunk/src/util/loading/load_param.h
===================================================================
--- trunk/src/util/loading/load_param.h	(revision 5140)
+++ trunk/src/util/loading/load_param.h	(revision 5141)
@@ -28,4 +28,5 @@
 #include "substring.h"
 #include "tinyxml.h"
+#include "helper_functions.h"
 
 // Forward Declaration //
@@ -216,17 +217,4 @@
         PRINTF(4)("Not loaded parameter %s of %s\n", paramName, pt2Object->getClassName()); \
 }
-
-
-/***********************
-*** HELPER FUNCTIONS ***
-***********************/
-bool          isBool(const char* BOOL, bool defaultValue);
-int           isInt(const char* INT, int defaultValue);
-float         isFloat(const char* FLOAT, float defaultValue);
-//const Vector& isVector(const char* VECTOR, const Vector& defaultValue);
-const char*   isString(const char* STRING, const char* defaultValue);
-
-//TiXmlEmlemnt* isXmlElem(const)
-
 
 /************************
Index: trunk/src/util/shell.cc
===================================================================
--- trunk/src/util/shell.cc	(revision 5140)
+++ trunk/src/util/shell.cc	(revision 5141)
@@ -494,5 +494,5 @@
   if (event.bPressed)
   {
-    PRINTF(4)("Shell received command %s\n", SDLKToKeyname(event.type));
+    PRINTF(5)("Shell received command %s\n", SDLKToKeyname(event.type));
     if (event.type == SDLK_BACKQUOTE)
     {
Index: trunk/src/util/shell.h
===================================================================
--- trunk/src/util/shell.h	(revision 5140)
+++ trunk/src/util/shell.h	(revision 5141)
@@ -16,4 +16,5 @@
 // FORWARD DECLARATION
 class Text;
+class ShellCommandBase;
 template<class T> class tList;
 template<class T> class tIterator;
@@ -85,4 +86,5 @@
     const tList<const char>* createCompleteList(const tList<const char>* inputList, const char* classNameBegin);
     const tList<const char>* createCompleteList(const tList<BaseObject>* inputList, const char* classNameBegin);
+    const tList<const char>* createCompleteList(const tList<ShellCommandBase>* inputList, const char* classNameBegin);
 
     // helpers //
Index: trunk/src/util/shell_command.cc
===================================================================
--- trunk/src/util/shell_command.cc	(revision 5140)
+++ trunk/src/util/shell_command.cc	(revision 5141)
@@ -30,15 +30,17 @@
 ShellCommandBase::ShellCommandBase(const char* commandName, ClassID classID, unsigned int paramCount, ...)
 {
+  this->setClassID(CL_SHELL_COMMAND, "ShellCommand");
+  this->setName(commandName);
+
   va_list parameters;
   va_start(parameters, paramCount);
 
   this->classID = classID;
+  this->className = ClassList::IDToString(classID);
+
   if (classID & CL_MASK_SINGLETON == CL_MASK_SINGLETON)
     this->isSingleton = true;
   else
     this->isSingleton = false;
-
-  this->commandName = new char[strlen(commandName)+1];
-  strcpy(this->commandName, commandName);
 
   // handling parameters, and storing them:
@@ -55,5 +57,4 @@
 ShellCommandBase::~ShellCommandBase()
 {
-  delete[] this->commandName;
   delete[] this->parameters;
 }
@@ -78,5 +79,5 @@
   while(elem != NULL)
   {
-    if (classID == elem->classID && !strcmp(commandName, elem->commandName))
+    if (classID == elem->classID && !strcmp(commandName, elem->getName()))
     {
       PRINTF(2)("Command already registered\n");
@@ -104,6 +105,6 @@
   while(elem != NULL)
   {
-    printf("%s\n", elem->commandName);
-    if (!strncmp(executionString, elem->commandName, strlen(elem->commandName)))
+    printf("%s\n", elem->getName());
+    if (!strncmp(executionString, elem->getName(), strlen(elem->getName())))
     {
       elem->executeCommand(commandEnd);
@@ -116,3 +117,2 @@
   return true;
 }
-
Index: trunk/src/util/shell_command.h
===================================================================
--- trunk/src/util/shell_command.h	(revision 5140)
+++ trunk/src/util/shell_command.h	(revision 5141)
@@ -8,4 +8,6 @@
 
 #include "base_object.h"
+
+#include "helper_functions.h"
 
 #include <stdarg.h>
@@ -44,4 +46,5 @@
 
 
+
 ////////////////
 // BASE CLASS //
@@ -53,5 +56,6 @@
     static bool execute (const char* executionString);
 
-    virtual void executeCommand (const char* parameters) = NULL;
+    static const tList<ShellCommandBase>* getCommandList() { return ShellCommandBase::commandList; };
+
 
   protected:
@@ -60,4 +64,7 @@
 
     static bool isRegistered(const char* commandName, ClassID classID, unsigned int paramCount, ...);
+
+  private:
+    virtual void executeCommand (const char* parameters) = NULL;
 
   protected:
@@ -68,6 +75,6 @@
 
   private:
-    char*                            commandName;         //!< The name of the Command when executed
-    long                             classID;             //!< The ID of the Class asociated to this Command
+    long                             classID;             //!< The ID of the Class associated to this Command
+    const char*                      className;           //!< The Name of the Class associated to this Command
 
     // STATIC MEMBERS
@@ -133,9 +140,7 @@
 #define FUNCTOR_LIST(x) ShellCommand ## x
 //#include "functor_list.h"
-//ShellCommand2(l_INT, l_INT);
+//FUNCTOR_LIST(2)(l_INT, l_INT);
 #undef FUNCTOR_LIST
 
-  private:
-//    T*                   objectPointer;       //!< The pointer to the object to apply this function to (NULL if classID == CL_NULL )
 };
 
