Changeset 9769 in orxonox.OLD for branches/new_class_id
- Timestamp:
- Sep 19, 2006, 9:35:11 PM (18 years ago)
- Location:
- branches/new_class_id/src/lib
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/new_class_id/src/lib/shell/shell_command.h
r9742 r9769 40 40 */ 41 41 #define SHELL_COMMAND(command, class, function) \ 42 OrxShell::ShellCommand* shell_command_##class##_##command = OrxShell::ShellCommand::registerCommand(#command, #class, createExecutor<class >(&class::function))42 OrxShell::ShellCommand* shell_command_##class##_##command = OrxShell::ShellCommand::registerCommand(#command, #class, createExecutor<class, BaseObject>(&class::function)) 43 43 44 44 /** … … 56 56 */ 57 57 #define SHELL_COMMAND_STATIC(command, class, function) \ 58 OrxShell::ShellCommand* shell_command_##class##_##command = OrxShell::ShellCommand::registerCommand(#command, #class, createExecutor<class >(function))58 OrxShell::ShellCommand* shell_command_##class##_##command = OrxShell::ShellCommand::registerCommand(#command, #class, createExecutor<class, BaseObject>(function)) 59 59 60 60 -
branches/new_class_id/src/lib/util/executor/executor.h
r9752 r9769 112 112 113 113 /** @returns the Clone as a new Copy of the Executor. */ 114 virtual Executor<CallType >* clone () const = 0;114 virtual Executor<CallType, BaseClass>* clone () const = 0; 115 115 116 116 -
branches/new_class_id/src/lib/util/executor/executor_generic.h
r9748 r9769 68 68 /////////// 69 69 //! @brief ExecutorClass, that can execute Functions without any parameters. 70 template<class T, typename CallType, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>70 template<class T, typename CallType, class BaseClass = BaseObject, template<typename> class Evaluater = ExecutorEvaluater> 71 71 class __EXECUTOR_FUNCTIONAL_NAME(0,) :public Executor<CallType, BaseClass> 72 72 { … … 89 89 * @param eval the CallType to get the Parameters from. 90 90 */ 91 virtual void operator()(Base Object* object, CallType& eval = Evaluater<CallType>::defaultValue()) const91 virtual void operator()(BaseClass* object, CallType& eval = Evaluater<CallType>::defaultValue()) const 92 92 { 93 93 (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)(); … … 100 100 virtual Executor<CallType, BaseClass>* clone() const 101 101 { 102 return new __EXECUTOR_FUNCTIONAL_NAME(0,)<T, CallType >(this->functionPointer);102 return new __EXECUTOR_FUNCTIONAL_NAME(0,)<T, CallType, BaseClass>(this->functionPointer); 103 103 }; 104 104 }; … … 110 110 /////////// 111 111 //! @brief ExecutorClass, that can execute Functions with one parameter. 112 template<class T, typename CallType, typename type0, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>112 template<class T, typename CallType, typename type0, class BaseClass = BaseObject, template<typename> class Evaluater = ExecutorEvaluater> 113 113 class __EXECUTOR_FUNCTIONAL_NAME(1,) : public Executor<CallType, BaseClass> 114 114 { … … 131 131 * @param eval the CallType to get the Parameters from. 132 132 */ 133 virtual void operator()(Base Object* object, CallType& eval = Evaluater<CallType>::defaultValue()) const133 virtual void operator()(BaseClass* object, CallType& eval = Evaluater<CallType>::defaultValue()) const 134 134 { 135 135 (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)( … … 143 143 virtual Executor<CallType, BaseClass>* clone() const 144 144 { 145 return new __EXECUTOR_FUNCTIONAL_NAME(1,)<T, CallType, type0 >(this->functionPointer);145 return new __EXECUTOR_FUNCTIONAL_NAME(1,)<T, CallType, type0, BaseClass>(this->functionPointer); 146 146 }; 147 147 }; … … 153 153 /////////// 154 154 //! @brief ExecutorClass, that can execute Functions with two parameters. 155 template<class T, typename CallType, typename type0, typename type1, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>155 template<class T, typename CallType, typename type0, typename type1, class BaseClass = BaseObject, template<typename> class Evaluater = ExecutorEvaluater> 156 156 class __EXECUTOR_FUNCTIONAL_NAME(2,) : public Executor<CallType, BaseClass> 157 157 { … … 174 174 * @param eval the CallType to get the Parameters from. 175 175 */ 176 virtual void operator()(Base Object* object, CallType& eval = Evaluater<CallType>::defaultValue()) const176 virtual void operator()(BaseClass* object, CallType& eval = Evaluater<CallType>::defaultValue()) const 177 177 { 178 178 (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)( … … 187 187 virtual Executor<CallType, BaseClass>* clone() const 188 188 { 189 return new __EXECUTOR_FUNCTIONAL_NAME(2,)<T, CallType, type0, type1 >(this->functionPointer);189 return new __EXECUTOR_FUNCTIONAL_NAME(2,)<T, CallType, type0, type1, BaseClass>(this->functionPointer); 190 190 }; 191 191 }; … … 197 197 /////////// 198 198 //! @brief ExecutorClass, that can execute Functions with three parameters. 199 template<class T, typename CallType, typename type0, typename type1, typename type2, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>199 template<class T, typename CallType, typename type0, typename type1, typename type2, class BaseClass = BaseObject, template<typename> class Evaluater = ExecutorEvaluater> 200 200 class __EXECUTOR_FUNCTIONAL_NAME(3,) : public Executor<CallType, BaseClass> 201 201 { … … 218 218 * @param eval the CallType to get the Parameters from. 219 219 */ 220 virtual void operator()(Base Object* object, CallType& eval = Evaluater<CallType>::defaultValue()) const220 virtual void operator()(BaseClass* object, CallType& eval = Evaluater<CallType>::defaultValue()) const 221 221 { 222 222 (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)( … … 232 232 virtual Executor<CallType, BaseClass>* clone() const 233 233 { 234 return new __EXECUTOR_FUNCTIONAL_NAME(3,)<T, CallType, type0, type1, type2 >(this->functionPointer);234 return new __EXECUTOR_FUNCTIONAL_NAME(3,)<T, CallType, type0, type1, type2, BaseClass>(this->functionPointer); 235 235 }; 236 236 }; … … 242 242 /////////// 243 243 //! @brief ExecutorClass, that can execute Functions with four parameters. 244 template<class T, typename CallType, typename type0, typename type1, typename type2, typename type3, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>244 template<class T, typename CallType, typename type0, typename type1, typename type2, typename type3, class BaseClass = BaseObject, template<typename> class Evaluater = ExecutorEvaluater> 245 245 class __EXECUTOR_FUNCTIONAL_NAME(4,) : public Executor<CallType, BaseClass> 246 246 { … … 263 263 * @param eval the CallType to get the Parameters from. 264 264 */ 265 virtual void operator()(Base Object* object, CallType& eval = Evaluater<CallType>::defaultValue()) const265 virtual void operator()(BaseClass* object, CallType& eval = Evaluater<CallType>::defaultValue()) const 266 266 { 267 267 (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)( … … 278 278 virtual Executor<CallType, BaseClass>* clone() const 279 279 { 280 return new __EXECUTOR_FUNCTIONAL_NAME(4,)<T, CallType, type0, type1, type2, type3 >(this->functionPointer);280 return new __EXECUTOR_FUNCTIONAL_NAME(4,)<T, CallType, type0, type1, type2, type3, BaseClass>(this->functionPointer); 281 281 }; 282 282 }; … … 288 288 /////////// 289 289 //! @brief ExecutorClass, that can execute Functions with five parameters. 290 template<class T, typename CallType, typename type0, typename type1, typename type2, typename type3, typename type4, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>290 template<class T, typename CallType, typename type0, typename type1, typename type2, typename type3, typename type4, class BaseClass = BaseObject, template<typename> class Evaluater = ExecutorEvaluater> 291 291 class __EXECUTOR_FUNCTIONAL_NAME(5,) : public Executor<CallType, BaseClass> 292 292 { … … 309 309 * @param eval the CallType to get the Parameters from. 310 310 */ 311 virtual void operator()(Base Object* object, CallType& eval = Evaluater<CallType>::defaultValue()) const311 virtual void operator()(BaseClass* object, CallType& eval = Evaluater<CallType>::defaultValue()) const 312 312 { 313 313 (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)( … … 325 325 virtual Executor<CallType, BaseClass>* clone() const 326 326 { 327 return new __EXECUTOR_FUNCTIONAL_NAME(5,)<T, CallType, type0, type1, type2, type3, type4 >(this->functionPointer);327 return new __EXECUTOR_FUNCTIONAL_NAME(5,)<T, CallType, type0, type1, type2, type3, type4, BaseClass>(this->functionPointer); 328 328 }; 329 329 }; … … 334 334 //////////////////// 335 335 //! @brief ExecutorClass, that can execute Functions with one parameter. 336 template<class T, typename CallType, typename ReturnType, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>336 template<class T, typename CallType, typename ReturnType, class BaseClass = BaseObject, template<typename> class Evaluater = ExecutorEvaluater> 337 337 class __EXECUTOR_FUNCTIONAL_NAME(0,ret) : public Executor<CallType, BaseClass> 338 338 { … … 355 355 * @param eval the CallType to get the Parameters from. 356 356 */ 357 virtual void operator()(Base Object* object, CallType& eval = Evaluater<CallType>::defaultValue()) const357 virtual void operator()(BaseClass* object, CallType& eval = Evaluater<CallType>::defaultValue()) const 358 358 { 359 359 Evaluater<CallType>::template storeRet<ReturnType>(eval, (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)()); … … 366 366 virtual Executor<CallType, BaseClass>* clone() const 367 367 { 368 return new __EXECUTOR_FUNCTIONAL_NAME(0,ret)<T, CallType, ReturnType >(this->functionPointer);368 return new __EXECUTOR_FUNCTIONAL_NAME(0,ret)<T, CallType, ReturnType, BaseClass>(this->functionPointer); 369 369 }; 370 370 }; … … 374 374 //////////////////// 375 375 //! @brief ExecutorClass, that can execute Functions with one parameter. 376 template<class T, typename CallType, typename ReturnType, typename type0, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>376 template<class T, typename CallType, typename ReturnType, typename type0, class BaseClass = BaseObject, template<typename> class Evaluater = ExecutorEvaluater> 377 377 class __EXECUTOR_FUNCTIONAL_NAME(1,ret) : public Executor<CallType, BaseClass> 378 378 { … … 395 395 * @param eval the CallType to get the Parameters from. 396 396 */ 397 virtual void operator()(Base Object* object, CallType& eval = Evaluater<CallType>::defaultValue()) const397 virtual void operator()(BaseClass* object, CallType& eval = Evaluater<CallType>::defaultValue()) const 398 398 { 399 399 Evaluater<CallType>::template storeRet<ReturnType>(eval, (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)( … … 407 407 virtual Executor<CallType, BaseClass>* clone() const 408 408 { 409 return new __EXECUTOR_FUNCTIONAL_NAME(1,ret)<T, CallType, ReturnType, type0 >(this->functionPointer);409 return new __EXECUTOR_FUNCTIONAL_NAME(1,ret)<T, CallType, ReturnType, type0, BaseClass>(this->functionPointer); 410 410 }; 411 411 }; … … 416 416 //////////////////// 417 417 //! @brief ExecutorClass, that can execute Functions with one parameter. 418 template<class T, typename CallType, typename ReturnType, typename type0, typename type1, template<typename> class Evaluater = ExecutorEvaluater, class BaseClass = BaseObject>418 template<class T, typename CallType, typename ReturnType, typename type0, typename type1, class BaseClass = BaseObject, template<typename> class Evaluater = ExecutorEvaluater> 419 419 class __EXECUTOR_FUNCTIONAL_NAME(2,ret) : public Executor<CallType, BaseClass> 420 420 { … … 437 437 * @param eval the CallType to get the Parameters from. 438 438 */ 439 virtual void operator()(Base Object* object, CallType& eval = Evaluater<CallType>::defaultValue()) const439 virtual void operator()(BaseClass* object, CallType& eval = Evaluater<CallType>::defaultValue()) const 440 440 { 441 441 Evaluater<CallType>::template storeRet<ReturnType>(eval, (__EXECUTOR_FUNCTIONAL_FUNCTION_EXEC)( … … 450 450 virtual Executor<CallType, BaseClass>* clone() const 451 451 { 452 return new __EXECUTOR_FUNCTIONAL_NAME(2,ret)<T, CallType, ReturnType, type0, type1 >(this->functionPointer);452 return new __EXECUTOR_FUNCTIONAL_NAME(2,ret)<T, CallType, ReturnType, type0, type1, BaseClass>(this->functionPointer); 453 453 }; 454 454 }; -
branches/new_class_id/src/lib/util/executor/functor_generic.h
r9745 r9769 27 27 */ 28 28 #define EXECUTOR_FUNCTIONAL_CREATOR0(CallType) \ 29 template<class T > Executor<CallType>* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)() __EXECUTOR_FUNCTIONAL_CONST) \29 template<class T, class BaseClass> Executor<CallType, BaseClass>* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)() __EXECUTOR_FUNCTIONAL_CONST) \ 30 30 { \ 31 return new __EXECUTOR_FUNCTIONAL_NAME(0,)<T, CallType >(functionPointer); \31 return new __EXECUTOR_FUNCTIONAL_NAME(0,)<T, CallType, BaseClass>(functionPointer); \ 32 32 } 33 33 … … 38 38 */ 39 39 #define EXECUTOR_FUNCTIONAL_CREATOR1(CallType, type0) \ 40 template<class T > Executor<CallType>* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0) __EXECUTOR_FUNCTIONAL_CONST) \40 template<class T, class BaseClass> Executor<CallType, BaseClass>* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0) __EXECUTOR_FUNCTIONAL_CONST) \ 41 41 { \ 42 return new __EXECUTOR_FUNCTIONAL_NAME(1,)<T, CallType, type0 >(functionPointer); \42 return new __EXECUTOR_FUNCTIONAL_NAME(1,)<T, CallType, type0, BaseClass>(functionPointer); \ 43 43 } 44 44 … … 50 50 */ 51 51 #define EXECUTOR_FUNCTIONAL_CREATOR2(CallType, type0, type1) \ 52 template<class T > Executor<CallType>* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1) __EXECUTOR_FUNCTIONAL_CONST) \52 template<class T, class BaseClass> Executor<CallType, BaseClass>* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1) __EXECUTOR_FUNCTIONAL_CONST) \ 53 53 { \ 54 return new __EXECUTOR_FUNCTIONAL_NAME(2,)<T, CallType, type0, type1 >(functionPointer); \54 return new __EXECUTOR_FUNCTIONAL_NAME(2,)<T, CallType, type0, type1, BaseClass>(functionPointer); \ 55 55 } 56 56 … … 63 63 */ 64 64 #define EXECUTOR_FUNCTIONAL_CREATOR3(CallType, type0, type1, type2) \ 65 template<class T > Executor<CallType>* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2) __EXECUTOR_FUNCTIONAL_CONST) \65 template<class T, class BaseClass> Executor<CallType, BaseClass>* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2) __EXECUTOR_FUNCTIONAL_CONST) \ 66 66 { \ 67 return new __EXECUTOR_FUNCTIONAL_NAME(3,)<T, CallType, type0, type1, type2 >(functionPointer); \67 return new __EXECUTOR_FUNCTIONAL_NAME(3,)<T, CallType, type0, type1, type2, BaseClass>(functionPointer); \ 68 68 } 69 69 … … 77 77 */ 78 78 #define EXECUTOR_FUNCTIONAL_CREATOR4(CallType, type0, type1, type2, type3) \ 79 template<class T > Executor<CallType>* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2, type3) __EXECUTOR_FUNCTIONAL_CONST) \79 template<class T, class BaseClass> Executor<CallType, BaseClass>* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2, type3) __EXECUTOR_FUNCTIONAL_CONST) \ 80 80 { \ 81 return new __EXECUTOR_FUNCTIONAL_NAME(4,)<T, CallType, type0, type1, type2, type3 >(functionPointer); \81 return new __EXECUTOR_FUNCTIONAL_NAME(4,)<T, CallType, type0, type1, type2, type3, BaseClass>(functionPointer); \ 82 82 } 83 83 … … 92 92 */ 93 93 #define EXECUTOR_FUNCTIONAL_CREATOR5(CallType, type0, type1, type2, type3, type4) \ 94 template<class T > Executor<CallType>* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2, type3, type4) __EXECUTOR_FUNCTIONAL_CONST) \94 template<class T, class BaseClass> Executor<CallType, BaseClass>* createExecutor(void (__EXECUTOR_FUNCTIONAL_FUNCTION_POINTER)(type0, type1, type2, type3, type4) __EXECUTOR_FUNCTIONAL_CONST) \ 95 95 { \ 96 return new __EXECUTOR_FUNCTIONAL_NAME(5,)<T, CallType, type0, type1, type2, type3, type4 >(functionPointer); \96 return new __EXECUTOR_FUNCTIONAL_NAME(5,)<T, CallType, type0, type1, type2, type3, type4, BaseClass>(functionPointer); \ 97 97 } 98 98 -
branches/new_class_id/src/lib/util/loading/load_param.cc
r9765 r9769 27 27 * @param inLoadCycle If we are in a LoadCycle (loading differs.). 28 28 */ 29 LoadParamBase::LoadParamBase(const TiXmlElement* root, const std::string& paramName, BaseObject* object,bool inLoadCycle)30 : object(object),paramName(paramName), inLoadCycle(inLoadCycle)29 LoadParamBase::LoadParamBase(const TiXmlElement* root, const std::string& paramName, bool inLoadCycle) 30 : paramName(paramName), inLoadCycle(inLoadCycle) 31 31 { 32 32 // determin the LoadString. … … 55 55 56 56 57 /**58 * @brief generates a LoadParam based on59 * @param root the Root Element to load onto the object.60 * @param paramName the Parameter name that is loaded.61 * @param object the Object to apply the changes on.62 * @param executor the Functional Object, that actually executes the function Call.63 * @param inLoadCycle If we are inside of a loading cycle. (Loading will be different here)64 */65 CLoadParam::CLoadParam(const TiXmlElement* root, const std::string& paramName, BaseObject* object, Executor<const SubString>* executor, bool inLoadCycle)66 : LoadParamBase(root, paramName, object, inLoadCycle)67 {68 assert (executor != NULL);69 // set the Executor.70 this->executor = executor;71 //if (this->executor)72 // this->executor->setName(paramName);73 }74 75 /**76 * This is a VERY SPECIAL deconsrtuctor.77 * It is made, so that it loads the Parameters on destruction.78 * meaning, if an Executor a valid Object exist, and all79 * Execution-Conditions are met, they are executed here.80 */81 CLoadParam::~CLoadParam()82 {83 assert(this->object != NULL);84 85 std::string loadString;86 if (this->loadElem != NULL && this->loadElem->ToText())87 {88 loadString = this->loadElem->Value();89 if (!loadString.empty())90 {91 PRINTF(4)("Loading value '%s' with Parameters '%s' onto: %s::%s\n",92 this->paramName.c_str(), loadString.c_str(), this->object->getClassCName(), this->object->getCName());93 (*this->executor)(this->object, SubString(loadString, ",", SubString::WhiteSpaces, false, '\\'));94 }95 }96 delete this->executor;97 }98 99 /**100 * @brief set the default values of the executor101 * @param value0 the first default value102 * @param value1 the second default value103 * @param value2 the third default value104 * @param value3 the fourth default value105 * @param value4 the fifth default value106 */107 CLoadParam& CLoadParam::defaultValues(const MultiType& value0, const MultiType& value1,108 const MultiType& value2, const MultiType& value3,109 const MultiType& value4)110 {111 assert(this->executor != NULL);112 this->executor->defaultValues(value0, value1, value2, value3, value4);113 114 return *this;115 }116 57 117 58 -
branches/new_class_id/src/lib/util/loading/load_param.h
r9765 r9769 45 45 */ 46 46 #define LoadParam(ROOT, PARAMETER_NAME, OBJECT, CLASS, FUNCTION) \ 47 CLoadParam (ROOT, PARAMETER_NAME, OBJECT, createExecutor<CLASS>(&CLASS::FUNCTION), false)47 CLoadParam<CLASS>(ROOT, PARAMETER_NAME, OBJECT, createExecutor<CLASS, CLASS>(&CLASS::FUNCTION), false) 48 48 49 49 /** … … 56 56 */ 57 57 #define LoadParam_CYCLE(ROOT, PARAMETER_NAME, OBJECT, CLASS, FUNCTION) \ 58 CLoadParam (ROOT, PARAMETER_NAME, OBJECT, createExecutor<CLASS>(&CLASS::FUNCTION), true)58 CLoadParam<CLASS>(ROOT, PARAMETER_NAME, OBJECT, createExecutor<CLASS, CLASS>(&CLASS::FUNCTION), true) 59 59 60 60 /** … … 89 89 { 90 90 protected: 91 LoadParamBase(const TiXmlElement* root, const std::string& paramName, BaseObject* object,bool inLoadCycle = false);91 LoadParamBase(const TiXmlElement* root, const std::string& paramName, bool inLoadCycle = false); 92 92 93 93 protected: … … 95 95 96 96 protected: 97 BaseObject* object; //!< The Object to work on98 97 const std::string paramName; //!< The Name of the Parameter this LoadParams applies to. 99 98 bool inLoadCycle; //!< If the Parameter is in a LoadCycle. … … 104 103 105 104 //! The Loading Class of the LoadParam, that acctually executes the loading process. 106 class CLoadParam : public LoadParamBase105 template <class OperateClass> class CLoadParam : public LoadParamBase 107 106 { 108 107 public: 109 CLoadParam(const TiXmlElement* root, const std::string& paramName, BaseObject* object, Executor<const SubString>* executor, bool inLoadCycle = false); 110 virtual ~CLoadParam(); 111 108 /** 109 * @brief generates a LoadParam based on 110 * @param root the Root Element to load onto the object. 111 * @param paramName the Parameter name that is loaded. 112 * @param object the Object to apply the changes on. 113 * @param executor the Functional Object, that actually executes the function Call. 114 * @param inLoadCycle If we are inside of a loading cycle. (Loading will be different here) 115 */ 116 CLoadParam(const TiXmlElement* root, const std::string& paramName, OperateClass* object, Executor<const SubString, OperateClass>* executor, bool inLoadCycle = false) 117 : LoadParamBase(root, paramName, inLoadCycle) 118 { 119 assert (executor != NULL); 120 this->object = object; 121 this->executor = executor; 122 } 123 virtual ~CLoadParam() 124 { 125 std::string loadString; 126 if (this->loadElem != NULL && this->loadElem->ToText()) 127 { 128 loadString = this->loadElem->Value(); 129 if (!loadString.empty()) 130 { 131 /* PRINTF(4)("Loading value '%s' with Parameters '%s' onto: %s::%s\n", 132 this->paramName.c_str(), loadString.c_str(), this->object->getClassCName(), this->object->getCName());*/ 133 (*this->executor)(this->object, SubString(loadString, ",", SubString::WhiteSpaces, false, '\\')); 134 } 135 } 136 delete this->executor; 137 } 138 /** 139 * @brief set the default values of the executor 140 * @param value0 the first default value @param value1 the second default value 141 * @param value2 the third default value @param value3 the fourth default value 142 * @param value4 the fifth default value 143 */ 112 144 CLoadParam& defaultValues(const MultiType& value0 = MT_NULL, const MultiType& value1 = MT_NULL, 113 145 const MultiType& value2 = MT_NULL, const MultiType& value3 = MT_NULL, 114 const MultiType& value4 = MT_NULL); 146 const MultiType& value4 = MT_NULL) 147 { this->executor->defaultValues(value0, value1, value2, value3, value4); return *this; }; 115 148 CLoadParam& describe(const std::string& descriptionText) { LoadParamBase::describe(descriptionText); return *this; }; 116 149 // CLoadParam& attribute(const std::string& attributeName, const Executor<SubString>& executor); … … 118 151 119 152 private: 120 Executor<const SubString>* executor; //!< The Executor, that actually executes the Loading process. 153 Executor<const SubString, OperateClass>* executor; //!< The Executor, that actually executes the Loading process. 154 OperateClass* object; 121 155 }; 122 156 -
branches/new_class_id/src/lib/util/loading/load_param_xml.cc
r9763 r9769 1 /*2 orxonox - the future of 3D-vertical-scrollers3 4 Copyright (C) 2004 orx5 6 This program is free software; you can redistribute it and/or modify7 it under the terms of the GNU General Public License as published by8 the Free Software Foundation; either version 2, or (at your option)9 any later version.10 11 ### File Specific:12 main-programmer: Benjamin Grauer13 co-programmer: ...14 */15 1 16 2 #define DEBUG_SPECIAL_MODULE DEBUG_MODULE_LOADING … … 19 5 #include "load_param_description.h" 20 6 21 22 /**23 * @brief generates a LoadParam based on24 * @param root the Root Element to load onto the object.25 * @param paramName the Parameter name that is loaded.26 * @param object the Object to apply the changes on.27 * @param executor the Functional Object, that actually executes the function Call.28 * @param inLoadCycle If we are inside of a loading cycle. (Loading will be different here)29 */30 XmlLoadParam::XmlLoadParam(const TiXmlElement* root, const std::string& paramName, BaseObject* object, Executor<const TiXmlElement*>* executor, bool inLoadCycle )31 : LoadParamBase(root, paramName, object, inLoadCycle)32 {33 this->executor = executor;34 }35 36 37 XmlLoadParam::~XmlLoadParam()38 {39 assert(this->object != NULL);40 41 (*this->executor)(this->object, this->loadElem);42 43 delete this->executor;44 } -
branches/new_class_id/src/lib/util/loading/load_param_xml.h
r9763 r9769 35 35 */ 36 36 #define LoadParamXML(ROOT, PARAMETER_NAME, OBJECT, CLASS, FUNCTION) \ 37 XmlLoadParam (ROOT, PARAMETER_NAME, OBJECT, new ExecutorXML<CLASS>(&CLASS::FUNCTION, ROOT, PARAMETER_NAME), false)37 XmlLoadParam<CLASS>(ROOT, PARAMETER_NAME, OBJECT, new ExecutorXML<CLASS, CLASS>(&CLASS::FUNCTION, ROOT, PARAMETER_NAME), false) 38 38 39 39 … … 47 47 */ 48 48 #define LoadParamXML_CYCLE(ROOT, PARAMETER_NAME, OBJECT, CLASS, FUNCTION) \ 49 XmlLoadParam (ROOT, PARAMETER_NAME, OBJECT, new ExecutorXML<CLASS>(&CLASS::FUNCTION, ROOT, PARAMETER_NAME), true)49 XmlLoadParam<CLASS>(ROOT, PARAMETER_NAME, OBJECT, new ExecutorXML<CLASS, CLASS>(&CLASS::FUNCTION, ROOT, PARAMETER_NAME), true) 50 50 51 51 //! A Class that can load XML tags onto an Object. 52 class XmlLoadParam : public LoadParamBase52 template <class BaseClass = BaseObject> class XmlLoadParam : public LoadParamBase 53 53 { 54 public: 55 XmlLoadParam(const TiXmlElement* root, const std::string& paramName, BaseObject* object, Executor<const TiXmlElement*>* executor, bool inLoadCycle = false); 56 virtual ~XmlLoadParam(); 54 public: 55 /** 56 * @brief generates a LoadParam based on 57 * @param root the Root Element to load onto the object. 58 * @param paramName the Parameter name that is loaded. 59 * @param object the Object to apply the changes on. 60 * @param executor the Functional Object, that actually executes the function Call. 61 * @param inLoadCycle If we are inside of a loading cycle. (Loading will be different here) 62 */ 63 XmlLoadParam(const TiXmlElement* root, const std::string& paramName, BaseClass* object, Executor<const TiXmlElement*>* executor, bool inLoadCycle = false) 64 : LoadParamBase(root, paramName, inLoadCycle), object(object) , executor(executor) 65 { 66 assert(this->object != NULL); 67 assert(this->executor != NULL); 68 } 57 69 58 /** @param descriptionText the description @returns self @brief describes the Loading parameter. */ 59 XmlLoadParam& describe(const std::string& descriptionText) { LoadParamBase::describe(descriptionText); return *this; }; 70 /** @brief executes and destroys the executor */ 71 virtual ~XmlLoadParam() 72 { 73 (*this->executor)(this->object, this->loadElem); 74 delete this->executor; 75 } 60 76 61 private: 62 Executor<const TiXmlElement*>* executor; //!< The Executor, that does the actual loading process. 77 /** @param descriptionText the description @returns self @brief describes the Loading parameter. */ 78 XmlLoadParam& describe(const std::string& descriptionText) { LoadParamBase::describe(descriptionText); return *this; }; 79 80 private: 81 BaseClass* object; //!< The Object to apply this to. 82 Executor<const TiXmlElement*>* executor; //!< The Executor, that does the actual loading process. 63 83 }; 64 84
Note: See TracChangeset
for help on using the changeset viewer.