Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 7198 in orxonox.OLD for trunk/src/lib/util/executor/executor.cc


Ignore:
Timestamp:
Mar 8, 2006, 2:30:19 PM (18 years ago)
Author:
bensch
Message:

orxonox/trunk: new Default Values… they now too are in MultiType instead of (count, …) or (count, va_arg) style

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/util/executor/executor.cc

    r7197 r7198  
    5555  for (unsigned int i = 0; i < FUNCTOR_MAX_ARGUMENTS; i++)
    5656  {
    57     printf("%d ", i);
    5857    if (this->defaultValue[i] == MT_NULL)
    5958    {
     
    6160      break;
    6261    }
    63 
    6462  }
    65   printf("%d\n", this->paramCount);
    66 
    6763  assert (paramCount <= FUNCTOR_MAX_ARGUMENTS);
    6864}
     
    8581}
    8682
    87 
    88 
    8983/**
    90  * sets default Values of the Commands
    91  * @param count how many default Values to set.
    92  * @param ... the default Values in order. They will be cast to the right type
     84 * @brief set the default values of the executor
     85 * @param value0 the first default value
     86 * @param value1 the second default value
     87 * @param value2 the third default value
     88 * @param value3 the fourth default value
     89 * @param value4 the fifth default value
    9390 * @returns itself
    94  *
    95  * Be aware, that when you use this Function, you !!MUST!! match the input as
    96  * count, [EXACTLY THE SAME AS IF YOU WOULD CALL THE FUNCTION UP TO count ARGUMENTS]
    9791 */
    98 Executor* Executor::defaultValues(unsigned int count, ...)
    99 {
    100   va_list values;
    101   va_start(values, count);
    102 
    103   this->defaultValues(count, values);
    104 }
    105 
    106 Executor* Executor::defaultValues(unsigned int count, va_list values)
     92Executor* Executor::defaultValues(const MultiType& value0,
     93                                  const MultiType& value1,
     94                                  const MultiType& value2,
     95                                  const MultiType& value3,
     96                                  const MultiType& value4)
    10797{
    10898  if (this == NULL)
    10999    return NULL;
    110   if (count == 0)
    111     return this;
    112   if (count > this->paramCount)
    113     count = this->paramCount;
    114100
     101  const MultiType* value[5];
     102  value[0] = &value0;
     103  value[1] = &value1;
     104  value[2] = &value2;
     105  value[3] = &value3;
     106  value[4] = &value4;
    115107
    116   for (unsigned int i = 0; i < count; i++)
     108  for (unsigned int i = 0; i < this->paramCount; i++)
    117109  {
    118     switch (this->defaultValue[i].getType())
     110    if (*value[i] != MT_NULL)
    119111    {
    120       case MT_BOOL:
    121         this->defaultValue[i].setInt(va_arg(values, int));
    122         break;
    123       case MT_CHAR:
    124         this->defaultValue[i].setChar((char)va_arg(values, int));
    125         break;
    126       case MT_STRING:
    127         this->defaultValue[i].setString(va_arg(values, char*));
    128         break;
    129       case MT_INT:
    130         this->defaultValue[i].setInt(va_arg(values, int));
    131         break;
    132         /*      case MT_UINT:
    133                 this->defaultValue[i].setInt((int)va_arg(values, unsigned int));
    134                 break;*/
    135       case MT_FLOAT:
    136         this->defaultValue[i].setFloat(va_arg(values, double));
    137         break;
    138         /*      case MT_LONG:
    139                 this->defaultValue[i].setInt((int) va_arg(values, long));
    140                 break;*/
    141       default:
    142         break;
     112      if (this->defaultValue[i].getType() == value[i]->getType())
     113      {
     114        this->defaultValue[i] = *value[i];
     115      }
     116      else
     117      {
     118        PRINTF(1)("Unable to set this Value, as it is not of type %s\n", MultiType::MultiTypeToString(this->defaultValue[i].getType()));
     119      }
    143120    }
    144121  }
Note: See TracChangeset for help on using the changeset viewer.