Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 5332 in orxonox.OLD for trunk/src/util/loading/load_param.cc


Ignore:
Timestamp:
Oct 9, 2005, 12:02:13 AM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: minor cleanup (speed-issue) in LoadClassDescription, using enum insted of String, faster, more reliable

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/util/loading/load_param.cc

    r5227 r5332  
    1313   co-programmer: ...
    1414*/
     15
     16#include "functor_list.h"
    1517
    1618#include "load_param.h"
     
    6466
    6567      this->paramDesc->paramCount = paramCount;
    66       this->paramDesc->types = new char*[paramCount];
     68      this->paramDesc->types = new int[paramCount];
    6769      this->paramDesc->defaultValues = new char*[paramCount];
    6870
     
    7375      {
    7476          // parameters parsed
    75         const char* tmpTypeName = va_arg (types, const char*);
    76         this->paramDesc->types[i] = new char[strlen(tmpTypeName)+1];
    77         strcpy(this->paramDesc->types[i], tmpTypeName);
    78 
    79         //! @todo SWITCH CASE WITH l_[TYPE]_TYPE -> much faster
    80           // default value description
    81         if (!strcmp(tmpTypeName, l_INT_NAME))
     77        int tmpType = va_arg (types, int);
     78        this->paramDesc->types[i] = tmpType;
     79
     80        //! @todo SWITCH CASE WITH l_[TYPE]_TYPE -> much faster (more usefull)
     81        switch (tmpType)
    8282        {
    83           sprintf(defaultVal, "%d", va_arg(types, l_INT_TYPE));
    84         }
    85         else if (!strcmp(tmpTypeName, l_LONG_NAME))
    86         {
    87           sprintf(defaultVal, "%0.3f", va_arg(types, l_LONG_TYPE));
    88         }
    89           /*          else if (!strcmp(tmpTypeName, l_SHORT_NAME))
    90         {
    91         sprintf(defaultVal, "%d", va_arg(types, l_SHORT_TYPE));
    92       }*/
    93         else if (!strcmp(tmpTypeName, l_FLOAT_NAME))
    94         {
    95           sprintf(defaultVal, "%0.3f", va_arg(types, double));
    96         }
    97         else if (!strcmp(tmpTypeName, l_STRING_NAME))
    98         {
    99           sprintf(defaultVal, "%s", va_arg(types, l_STRING_TYPE));
    100         }
    101         else if (!strcmp(tmpTypeName, l_XML_ELEM_NAME))
    102         {
    103           sprintf(defaultVal, "");
     83          case ParameterInt:
     84            sprintf(defaultVal, "%d", va_arg(types, l_INT_TYPE));
     85            break;
     86          case ParameterLong:
     87            sprintf(defaultVal, "%0.3f", va_arg(types, l_LONG_TYPE));
     88            break;
     89          case ParameterFloat:
     90            sprintf(defaultVal, "%0.3f", va_arg(types, double));
     91            break;
     92          case ParameterString:
     93            sprintf(defaultVal, "%s", va_arg(types, l_STRING_TYPE));
     94            break;
     95          case ParameterXML:
     96            sprintf(defaultVal, "");
     97            break;
    10498        }
    10599
     
    144138LoadParamDescription::~LoadParamDescription()
    145139{
    146   if (this->types != NULL)
    147   {
    148     for(int i = 0; i < this->paramCount; i++)
    149     {
    150       delete []this->types[i];
    151     }
    152   }
    153140  if (this->defaultValues != NULL)
    154141  {
     
    184171      if (i > 0)
    185172        PRINT(3)(",");
    186       PRINT(3)("%s", this->types[i]);
     173      switch (this->types[i])
     174      {
     175        default:
     176          PRINTF(3)("none");
     177          break;
     178        case ParameterBool:
     179          PRINT(3)("bool");
     180          break;
     181        case ParameterChar:
     182          PRINT(3)("char");
     183          break;
     184        case ParameterString:
     185          PRINT(3)("string");
     186          break;
     187        case ParameterInt:
     188          PRINT(3)("int");
     189          break;
     190        case ParameterUInt:
     191          PRINT(3)("Uint");
     192          break;
     193        case ParameterFloat:
     194          PRINT(3)("float");
     195          break;
     196        case ParameterLong:
     197          PRINT(3)("long");
     198          break;
     199        case ParameterXML:
     200          PRINT(3)("XML");
     201          break;
     202      }
    187203    }
    188204  PRINT(3)("</%s>", this->paramName);
     
    197213      if (i > 0)
    198214        PRINT(3)(", ");
    199       if (!strcmp(this->types[i], l_STRING_NAME))
     215      if (this->types[i] & ParameterString)
    200216      { // leave brackets !!
    201217        PRINT(3)("\"%s\"", this->defaultValues[i]);
Note: See TracChangeset for help on using the changeset viewer.