Index: /branches/new_class_id/src/lib/util/Makefile.am
===================================================================
--- /branches/new_class_id/src/lib/util/Makefile.am	(revision 9767)
+++ /branches/new_class_id/src/lib/util/Makefile.am	(revision 9768)
@@ -21,5 +21,5 @@
 		loading/load_param_xml.cc \
 		loading/load_param_description.cc \
-		loading/load_param_class_desctiption.cc \
+		loading/load_param_class_description.cc \
 		loading/factory.cc \
 		loading/fast_factory.cc \
Index: /branches/new_class_id/src/lib/util/loading/load_param_class_description.cc
===================================================================
--- /branches/new_class_id/src/lib/util/loading/load_param_class_description.cc	(revision 9767)
+++ /branches/new_class_id/src/lib/util/loading/load_param_class_description.cc	(revision 9768)
@@ -17,118 +17,15 @@
 
 #include "multi_type.h"
-#include <stdarg.h>
 #include "debug.h"
-
-/**
- * @param paramName the name of the parameter to load
- */
-LoadParamDescription::LoadParamDescription(const std::string& paramName)
-{
-  this->types = NULL;
-  this->defaultValues = NULL;
-  this->paramName = paramName;
-}
-
-/**
- *  removes all the alocated memory
- */
-LoadParamDescription::~LoadParamDescription()
-{
-  if (this->defaultValues != NULL)
-  {
-    for(int i = 0; i < this->paramCount; i++)
-    {
-      delete[] this->defaultValues[i];
-    }
-  }
-
-  delete[] this->types;
-  delete[] this->defaultValues;
-}
-
-/**
- * @param descriptionText The text to set as a description for this Parameter
- */
-void LoadParamDescription::setDescription(const std::string& descriptionText)
-{
-  this->description = descriptionText;
-}
-
-/**
- *  prints out this parameter, its input method and the description (if availiable)
- */
-void LoadParamDescription::print() const
-{
-  PRINT(3)(" <%s>", this->paramName.c_str());
-  for (int i = 0; i < this->paramCount; i++)
-  {
-    if (i > 0)
-      PRINT(3)(",");
-    // FIXME
-    //     switch (this->types[i])
-//     {
-//       default:
-//         PRINTF(3)("none");
-//         break;
-//       case ParameterBool:
-//         PRINT(3)("bool");
-//         break;
-//       case ParameterChar:
-//         PRINT(3)("char");
-//         break;
-//       case ParameterString:
-//         PRINT(3)("string");
-//         break;
-//       case ParameterInt:
-//         PRINT(3)("int");
-//         break;
-//       case ParameterUInt:
-//         PRINT(3)("Uint");
-//         break;
-//       case ParameterFloat:
-//         PRINT(3)("float");
-//         break;
-//       case ParameterLong:
-//         PRINT(3)("long");
-//         break;
-//       case ParameterXML:
-//         PRINT(3)("XML");
-//         break;
-//     }
-  }
-  PRINT(3)("</%s>", this->paramName.c_str());
-  if (!this->description.empty())
-    PRINT(3)(" -- %s", this->description.c_str());
-  // default values
-  if (this->paramCount > 0)
-  {
-    PRINT(3)(" (Default: ");
-    for (int i = 0; i < this->paramCount; i++)
-    {
-      if (i > 0)
-        PRINT(3)(", ");
-      if (this->types[i] & MT_STRING)
-      { // leave brackets !!
-        PRINT(3)("\"%s\"", this->defaultValues[i]);
-      }
-      else
-      {
-        PRINT(3)("%s", this->defaultValues[i]);
-      }
-    }
-    PRINT(3)(")");
-  }
-  PRINT(3)("\n");
-}
 
 /**
  *  A list, that holds all the classes that are loadable (classes not objects!!)
  */
-std::list<LoadParamClassDescription*>* LoadParamClassDescription::classList = NULL;
+LoadParamClassDescription::ClassDescriptionSet LoadParamClassDescription::_classList;
 
 /**
  *  if the description of Parameters should be executed
  */
-bool LoadParamClassDescription::parametersDescription = false;
+bool LoadParamClassDescription::_parametersDescription = false;
 
 /**
@@ -136,12 +33,6 @@
  */
 LoadParamClassDescription::LoadParamClassDescription(const std::string& className)
-{
-  this->className = className;
-
-  if (LoadParamClassDescription::classList == NULL)
-    LoadParamClassDescription::classList = new std::list<LoadParamClassDescription*>;
-
-  LoadParamClassDescription::classList->push_back(this);
-}
+    : _className(className)
+{ }
 
 /**
@@ -149,73 +40,11 @@
  */
 LoadParamClassDescription::~LoadParamClassDescription()
-{
-  std::list<LoadParamDescription*>::iterator it = this->paramList.begin();
-  while (!this->paramList.empty())
-  {
-    delete this->paramList.front();
-    this->paramList.pop_front();
-  }
-}
+{}
 
 void LoadParamClassDescription::deleteAllDescriptions()
 {
-  if (LoadParamClassDescription::classList != NULL)
-  {
-    while (!LoadParamClassDescription::classList->empty())
-    {
-      delete LoadParamClassDescription::classList->front();
-      LoadParamClassDescription::classList->pop_front();
-    }
-    delete LoadParamClassDescription::classList;
-  }
-  LoadParamClassDescription::classList = NULL;
+  LoadParamClassDescription::_classList.clear();
 }
 
-
-/**
- *  adds a class to the list of loadable classes
- * @param className The name of the class to add
-
-   this function searches for the className string, and if found just returns the appropriate Class.
-   Otherwise it returns a new classDescription
- */
-LoadParamClassDescription* LoadParamClassDescription::addClass(const std::string& className)
-{
-  if (LoadParamClassDescription::classList != NULL)
-  {
-    std::list<LoadParamClassDescription*>::iterator it = LoadParamClassDescription::classList->begin();
-    while (it != LoadParamClassDescription::classList->end())
-    {
-      if ((*it)->className == className)
-      {
-        return (*it);
-      }
-      it++;
-    }
-  }
-  return new LoadParamClassDescription(className);
-}
-
-/**
- *  does the same as addClass(const std::string& className), but with params
- * @param paramName the name of the parameter to add.
- */
-LoadParamDescription* LoadParamClassDescription::addParam(const std::string& paramName)
-{
-  std::list<LoadParamDescription*>::iterator it = this->paramList.begin();
-  while (it != this->paramList.end())
-  {
-    if ((*it)->paramName == paramName)
-    {
-      return NULL;
-    }
-    it++;
-  }
-
-  LoadParamDescription* newParam = new LoadParamDescription(paramName);
-
-  this->paramList.push_back(newParam);
-  return newParam;
-}
 
 /**
@@ -228,53 +57,17 @@
   PRINT(3)("===============================================================\n");
   PRINT(3)(" Listing all the Loadable Options (loaded since Game started).\n\n");
-  if (LoadParamClassDescription::classList != NULL)
+  for (ClassDescriptionSet::const_iterator classIt = LoadParamClassDescription::_classList.begin();
+       classIt != LoadParamClassDescription::_classList.begin();
+       classIt ++)
   {
-    std::list<LoadParamClassDescription*>::iterator classDesc = LoadParamClassDescription::classList->begin();
-    while (classDesc != LoadParamClassDescription::classList->end())
+    PRINT(3)("<%s>\n", (*classIt)._className.c_str());
+    for (ParamDescriptionSet::const_iterator param = (*classIt)._parameters.begin();
+         param != (*classIt)._parameters.end();
+         ++param)
     {
-      PRINT(3)("<%s>\n", (*classDesc)->className.c_str());
-      std::list<LoadParamDescription*>::iterator param = (*classDesc)->paramList.begin();
-      while (param != (*classDesc)->paramList.end())
-      {
-        (*param)->print();
-        param++;
-      }
-      PRINT(3)("</%s>\n\n", (*classDesc)->className.c_str());
-      classDesc++;
+      (*param).print();
     }
+    PRINT(3)("</%s>\n\n", (*classIt)._className.c_str());
   }
-  else
-    PRINT(3)("no Classes defined so far\n");
   PRINT(3)("===============================================================\n");
 }
-
-/**
- * searches for classes, which beginn with classNameBegin
- * @param classNameBegin the beginning string of a Class
- * @return a NEW char-array with ClassNames. The LIST should be deleted afterwards,
- * !! The strings MUST NOT be deleted !!
- */
-std::list<std::string> LoadParamClassDescription::searchClassWithShort(const std::string& classNameBegin)
-{
-  /// FIXME
-  // NOT USED
-/*  unsigned int searchLength = strlen(classNameBegin);
-  std::list<const std::string&> retVal;
-
-  tIterator<LoadParamClassDescription>* iterator = LoadParamClassDescription::classList->getIterator();
-  LoadParamClassDescription* enumClassDesc = iterator->firstElement();
-  while (enumClassDesc)
-  {
-    if (strlen(enumClassDesc->className)>searchLength+1 &&
-        !strncasecmp(enumClassDesc->className, classNameBegin, searchLength))
-    {
-      retVal->add(enumClassDesc->className);
-    }
-    enumClassDesc = iterator->nextElement();
-  }
-  delete iterator;
-
-  return retVal;*/
-  std::list<std::string> a;
-  return a;
-}
Index: /branches/new_class_id/src/lib/util/loading/load_param_class_description.h
===================================================================
--- /branches/new_class_id/src/lib/util/loading/load_param_class_description.h	(revision 9767)
+++ /branches/new_class_id/src/lib/util/loading/load_param_class_description.h	(revision 9768)
@@ -44,6 +44,4 @@
 
   static void printAll(const std::string& fileName = "");
-  static std::list<std::string> searchClassWithShort(const std::string& classNameBegin);
-  //  static const LoadParamDescription* getClass(const std::string& className);
 
 private:
@@ -53,5 +51,5 @@
   static bool                                  _parametersDescription;  //!< if parameter-description should be enabled globally.
 
-  static ClassDescriptionSet*                  _classList;              //!< a list, that stores all the loadable classes. (after one instance has been loaded)
+  static ClassDescriptionSet                   _classList;              //!< a list, that stores all the loadable classes. (after one instance has been loaded)
 
 private:
Index: /branches/new_class_id/src/lib/util/loading/load_param_description.cc
===================================================================
--- /branches/new_class_id/src/lib/util/loading/load_param_description.cc	(revision 9767)
+++ /branches/new_class_id/src/lib/util/loading/load_param_description.cc	(revision 9768)
@@ -107,2 +107,4 @@
   PRINT(3)("\n");
 }
+
+
Index: /branches/new_class_id/src/orxonox.cc
===================================================================
--- /branches/new_class_id/src/orxonox.cc	(revision 9767)
+++ /branches/new_class_id/src/orxonox.cc	(revision 9768)
@@ -53,6 +53,4 @@
 #include "shell_buffer.h"
 
-#include "util/loading/load_param_class_description.h"
-
 #include "network_manager.h"
 #include "shared_network_data.h"
@@ -128,6 +126,4 @@
   FastFactory::deleteAll();
   OrxShell::ShellCommandClass::unregisterAllCommands();
-
-  LoadParamClassDescription::deleteAllDescriptions();
 
   // handlers
