Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 7714 in orxonox.OLD for trunk/src/lib


Ignore:
Timestamp:
May 19, 2006, 1:29:27 AM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: Reimplementation of the Executor started in orxonox.cc

Location:
trunk/src/lib/util
Files:
4 edited

Legend:

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

    r7300 r7714  
    1818#include "executor.h"
    1919
    20 #include "debug.h"
    21 #include "class_list.h"
    22 
    23 #include "key_names.h"
    24 #include <stdarg.h>
    25 #include <stdio.h>
    26 #include <string.h>
    27 
    28 using namespace std;
    29 
    3020////////////////////////
    3121// SHELL COMMAND BASE //
    3222////////////////////////
    3323/**
    34  * constructs and registers a new Command
     24 * @brief constructs and registers a new Command
    3525 * @param commandName the name of the Command
    3626 * @param className the name of the class to apply this command to
     
    4333                   const MultiType& param4)
    4434{
    45   this->setClassID(CL_EXECUTOR, "Executor");
     35//  this->setClassID(CL_EXECUTOR, "Executor");
    4636
    4737  // What Parameters have we got
  • trunk/src/lib/util/executor/executor.h

    r7474 r7714  
    3636 *  Functions with many types (@see functor_list.h)
    3737 */
    38 class Executor: public BaseObject
     38class Executor : public BaseObject
    3939{
    40   public:
    41     virtual ~Executor();
    42 
    43     virtual Executor* clone () const = 0;
    44 
    45     // SETTING up the EXECUTOR
    46     Executor* defaultValues(const MultiType& value0 = MT_NULL, const MultiType& value1 = MT_NULL,
    47                             const MultiType& value2 = MT_NULL, const MultiType& value3 = MT_NULL,
    48                             const MultiType& value4 = MT_NULL);
    49     /** @param i the i'th defaultValue, @returns reference to the MultiType */
    50     inline MultiType& getDefaultValue(unsigned int i) { return defaultValue[i]; };
    51 
    52     // EXECUTE
    53     /** executes a Command @param object the object to apply this to @param parameters the parameters the command takes */
    54     virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const = 0;
    55     /** executes a Command @param object the object to apply this to @param parameters the parameters the command takes @brief here for your convenience*/
    56     void execute (BaseObject* object, const std::string& parameters = "") const { (*this)(object, parameters); };
    57 
    58     // RETRIEVE INFORMATION
    59     /** @returns the Type of this Function (either static or objective) */
    60     inline long getType() const { return this->functorType; };
    61     /** @returns the Count of Parameters this Executor takes */
    62     inline unsigned int getParamCount() const { return this->paramCount; };
    63 
    64     static void debug();
    65 
    66   protected:
    67     Executor(const MultiType& param0 = MT_NULL, const MultiType& param1 = MT_NULL,
    68              const MultiType& param2 = MT_NULL, const MultiType& param3 = MT_NULL,
    69              const MultiType& param4 = MT_NULL);
    70 
    71     void cloning(Executor* executor) const;
    72 
    73   protected:
    74     short                       functorType;      //!< The type of Function we've got (either static or objective).
    75     unsigned int                paramCount;       //!< the count of parameters.
    76     MultiType                   defaultValue[5];  //!< Default Values.
     40public:
     41  virtual ~Executor();
     42
     43  virtual Executor* clone () const = 0;
     44
     45  // SETTING up the EXECUTOR
     46  Executor* defaultValues(const MultiType& value0 = MT_NULL, const MultiType& value1 = MT_NULL,
     47                          const MultiType& value2 = MT_NULL, const MultiType& value3 = MT_NULL,
     48                          const MultiType& value4 = MT_NULL);
     49  /** @param i the i'th defaultValue, @returns reference to the MultiType */
     50  inline MultiType& getDefaultValue(unsigned int i) { return defaultValue[i]; };
     51
     52  // EXECUTE
     53  /** executes a Command @param object the object to apply this to @param parameters the parameters the command takes */
     54  virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const = 0;
     55  /** executes a Command @param object the object to apply this to @param parameters the parameters the command takes @brief here for your convenience*/
     56  void execute (BaseObject* object, const std::string& parameters = "") const { (*this)(object, parameters); };
     57
     58  // RETRIEVE INFORMATION
     59  /** @returns the Type of this Function (either static or objective) */
     60  inline long getType() const { return this->functorType; };
     61  /** @returns the Count of Parameters this Executor takes */
     62  inline unsigned int getParamCount() const { return this->paramCount; };
     63
     64  static void debug();
     65
     66protected:
     67  Executor(const MultiType& param0 = MT_NULL, const MultiType& param1 = MT_NULL,
     68           const MultiType& param2 = MT_NULL, const MultiType& param3 = MT_NULL,
     69           const MultiType& param4 = MT_NULL);
     70
     71  void cloning(Executor* executor) const;
     72
     73protected:
     74  short                       functorType;      //!< The type of Function we've got (either static or objective).
     75  unsigned int                paramCount;       //!< the count of parameters.
     76  MultiType                   defaultValue[5];  //!< Default Values.
    7777};
    7878
     
    8989
    9090
     91
    9192///////////////////////
    9293// FUNCTION POINTERS //
     
    232233template<class T> class EXECUTOR : public Executor
    233234{
    234   public:
    235     EXECUTOR() : Executor() { };
    236     // COPY constuctor (virtual version)
    237     virtual Executor* clone () const
    238     {
    239       EXECUTOR<T>* executor = new EXECUTOR<T>();
    240       this->cloning(executor);
    241       executor->fp = this->fp;
    242       return executor;
    243     }
    244 
    245 //! FUNCTOR_LIST is the List of CommandConstructors
     235public:
     236  EXECUTOR() : Executor() { };
     237  // COPY constuctor (virtual version)
     238  virtual Executor* clone () const
     239  {
     240    EXECUTOR<T>* executor = new EXECUTOR<T>();
     241    this->cloning(executor);
     242    executor->fp = this->fp;
     243    return executor;
     244  }
     245
     246  //! FUNCTOR_LIST is the List of CommandConstructors
    246247#define FUNCTOR_LIST(x) ExecutorConstructor ## x
    247248#include "functor_list.h"
    248249#undef FUNCTOR_LIST
    249250
    250   private:
    251 //! FUNCTOR_LIST is the List of FunctionPointers
    252     union FunctionPointers {
     251private:
     252  //! FUNCTOR_LIST is the List of FunctionPointers
     253  union FunctionPointers {
    253254#define FUNCTOR_LIST(x) ExecutorFunctionPoiter ## x
    254255#include "functor_list.h"
    255256#undef FUNCTOR_LIST
    256     } fp;
    257 
    258     virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const
    259     {
    260 //! FUNCTOR_LIST is the List of Executive Functions
     257  } fp;
     258
     259  virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const
     260  {
     261    //! FUNCTOR_LIST is the List of Executive Functions
    261262#define FUNCTOR_LIST(x) ExecutorExecute ## x
    262263#include "functor_list.h"
    263264#undef FUNCTOR_LIST
    264     }
     265
     266  }
    265267};
    266268
     
    292294template<class T> class ExecutorStatic : public Executor
    293295{
    294   public:
    295     EXECUTOR() : Executor() { };
    296     // COPY constuctor
    297     virtual Executor* clone () const
    298     {
    299       EXECUTOR<T>* executor = new EXECUTOR<T>();
    300       this->cloning(executor);
    301       executor->fp = this->fp;
    302       return executor;
    303     }
    304 
    305 //! FUNCTOR_LIST is the List of CommandConstructors
     296public:
     297  EXECUTOR() : Executor() { };
     298  // COPY constuctor
     299  virtual Executor* clone () const
     300  {
     301    EXECUTOR<T>* executor = new EXECUTOR<T>();
     302    this->cloning(executor);
     303    executor->fp = this->fp;
     304    return executor;
     305  }
     306
     307  //! FUNCTOR_LIST is the List of CommandConstructors
    306308#define FUNCTOR_LIST(x) ExecutorConstructor ## x
    307309#include "functor_list.h"
    308310#undef FUNCTOR_LIST
    309311
    310   private:
    311 //! FUNCTOR_LIST is the List of FunctionPointers
    312     union FunctionPointers {
     312private:
     313  //! FUNCTOR_LIST is the List of FunctionPointers
     314  union FunctionPointers {
    313315#define FUNCTOR_LIST(x) ExecutorFunctionPoiter ## x
    314316#include "functor_list.h"
    315317#undef FUNCTOR_LIST
    316     } fp;
    317 
    318 
    319     virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const
    320     {
    321 //! FUNCTOR_LIST is the List of Executive Functions
     318  } fp;
     319
     320
     321  virtual void operator()(BaseObject* object, const SubString& sub = SubString()) const
     322  {
     323    //! FUNCTOR_LIST is the List of Executive Functions
    322324#define FUNCTOR_LIST(x) ExecutorExecute ## x
    323325#include "functor_list.h"
    324326#undef FUNCTOR_LIST
    325     }
     327
     328  }
    326329};
    327330
  • trunk/src/lib/util/helper_functions.cc

    r7412 r7714  
    101101 * @return returns the contained string (char-array), if STRING was correct otherwise defaultValue
    102102 */
    103 std::string isString(const std::string& STRING, const std::string& defaultValue)
     103const std::string& isString(const std::string& STRING, const std::string& defaultValue)
    104104{
    105105  if (STRING.size() > 0)
     
    124124  {
    125125    if(::toupper(*it1) != ::toupper(*it2)) //letters differ?
    126      // return -1 to indicate smaller than, 1 otherwise
     126      // return -1 to indicate smaller than, 1 otherwise
    127127      return (::toupper(*it1)  < ::toupper(*it2)) ? -1 : 1;
    128128    //proceed to the next character in each string
     
    131131  }
    132132  size_t size1=s1.size(), size2=s2.size();// cache lengths
    133    //return -1,0 or 1 according to strings' lengths
     133  //return -1,0 or 1 according to strings' lengths
    134134  if (size1==size2)
    135135    return 0;
     
    155155  {
    156156    if(::toupper(*it1) != ::toupper(*it2)) //letters differ?
    157      // return -1 to indicate smaller than, 1 otherwise
     157      // return -1 to indicate smaller than, 1 otherwise
    158158      return (::toupper(*it1)  < ::toupper(*it2)) ? -1 : 1;
    159159    //proceed to the next character in each string
  • trunk/src/lib/util/helper_functions.h

    r7371 r7714  
    1818float         isFloat(const std::string& FLOAT, float defaultValue);
    1919const char*   isCString(const std::string& STRING, const char* defaultValue);
    20 std::string  isString(const std::string& STRING, const std::string& defaultValue);
     20const std::string& isString(const std::string& STRING, const std::string& defaultValue);
    2121
    2222
Note: See TracChangeset for help on using the changeset viewer.