Changeset 5654 in orxonox.OLD for trunk/src/util
- Timestamp:
- Nov 20, 2005, 9:12:50 PM (19 years ago)
- Location:
- trunk/src/util
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/util/loading/load_param.cc
r5653 r5654 13 13 co-programmer: ... 14 14 */ 15 16 #define DEBUG_SPECIAL_MODULE DEBUG_MODULE_LOADING 15 17 16 18 #include "functor_list.h" … … 114 116 * @param executor the Executor, that executes the loading procedure. 115 117 */ 116 LoadParamBase::LoadParamBase(const TiXmlElement* root, const char* paramName, BaseObject* object, const Executor& executor) 117 { 118 this->loadString = grabParameter(root, paramName); 118 LoadParamBase::LoadParamBase(const TiXmlElement* root, const char* paramName, BaseObject* object, const Executor& executor, bool inLoadCycle) 119 { 119 120 this->paramName = paramName; 120 121 this->object = object; 121 if (root != NULL) 122 { 123 this->executor = executor.clone(); 124 } 122 this->inLoadCycle = inLoadCycle; 123 124 // determin the LoadString. 125 if (likely(!inLoadCycle)) 126 this->loadString = grabParameter(root, paramName); 125 127 else 126 128 { 127 this->executor = NULL; 129 if (!strcmp(root->Value(), paramName)) 130 { 131 const TiXmlNode* val = root->FirstChild(); 132 if( val->ToText()) 133 this->loadString = val->Value(); 134 } 135 else 136 this->loadString = NULL; 128 137 } 129 138 139 // set the Executor. 140 this->executor = executor.clone(); 130 141 } 131 142 -
trunk/src/util/loading/load_param.h
r5653 r5654 46 46 */ 47 47 #define LoadParamNEW(ROOT, PARAMETER_NAME, OBJECT, CLASS, FUNCTION) \ 48 LoadParamBase(ROOT, PARAMETER_NAME, OBJECT, ExecutorObjective<CLASS>(&CLASS::FUNCTION)) 48 LoadParamBase(ROOT, PARAMETER_NAME, OBJECT, ExecutorObjective<CLASS>(&CLASS::FUNCTION), false) 49 50 #define LoadParam_CYCLE(ROOT, PARAMETER_NAME, OBJECT, CLASS, FUNCTION) \ 51 LoadParamBase(ROOT, PARAMETER_NAME, OBJECT, ExecutorObjective<CLASS>(&CLASS::FUNCTION), true) 49 52 50 53 #define LoadParamXML(ROOT, PARAMETER_NAME, OBJECT, CLASS, FUNCTION) \ 51 LoadParamBase(ROOT, PARAMETER_NAME, OBJECT, ExecutorXML<CLASS>(&CLASS::FUNCTION, ROOT, PARAMETER_NAME)) 54 LoadParamBase(ROOT, PARAMETER_NAME, OBJECT, ExecutorXML<CLASS>(&CLASS::FUNCTION, ROOT, PARAMETER_NAME), false) 55 56 #define LoadParamXML_CYCLE(ROOT, PARAMETER_NAME, OBJECT, CLASS, FUNCTION) \ 57 LoadParamBase(ROOT, PARAMETER_NAME, OBJECT, ExecutorXML<CLASS>(&CLASS::FUNCTION, ROOT, PARAMETER_NAME), true) 58 59 60 /** 61 * this Starts a Cycle in the Loading Process 62 * be aware, that in the cycle the first parameter of load_param should because 63 * called element, and that you must say true at the Fith parameter, or it will fail 64 * also you will have to close the Cycle again with LOAD_PARAM_END_CYCLE 65 * 66 * @param ROOT The root XLM-element to search element under. 67 * @param ELEMENT the element to search 68 */ 69 #define LOAD_PARAM_START_CYCLE(ROOT, ELEMENT) \ 70 const TiXmlElement* ELEMENT; \ 71 ELEMENT= ROOT->FirstChildElement(); \ 72 while( ELEMENT != NULL) \ 73 { 74 /** 75 * closes a LoadParam Loop 76 * @see LOAD_PARAM_START_CYCLE 77 * @param ELEMENT the Element to step through. 78 */ 79 #define LOAD_PARAM_END_CYCLE(ELEMENT) \ 80 ELEMENT = ELEMENT->NextSiblingElement(); \ 81 } 82 83 52 84 53 85 … … 59 91 { 60 92 public: 61 LoadParamBase(const TiXmlElement* root, const char* paramName, BaseObject* object, const Executor& exe utor);93 LoadParamBase(const TiXmlElement* root, const char* paramName, BaseObject* object, const Executor& executor, bool inLoadCycle = false); 62 94 ~LoadParamBase(); 63 95 … … 69 101 70 102 protected: 71 bool withLoadString; //!< If we need the loadString to execute this.103 bool inLoadCycle; 72 104 Executor* executor; 73 105 BaseObject* object; … … 82 114 }; 83 115 84 85 //! macro that makes it even more easy to load a Parameter86 /**87 * @param className the name of the class to load88 * @param parameterName the name of the parameter to load as written in the XML-file89 * @param function the function to call90 */91 #define LOAD_PARAM(className, parameterName, paramFunction) \92 LoadParam<className>(root, #parameterName, this, &className::paramFunction)93 94 /**95 * this Starts a Cycle in the Loading Process96 * be aware, that in the cycle the first parameter of load_param should because97 * called element, and that you must say true at the Fith parameter, or it will fail98 * also you will have to close the Cycle again with LOAD_PARAM_END_CYCLE99 *100 * @param ROOT The root XLM-element to search element under.101 * @param ELEMENT the element to search102 */103 #define LOAD_PARAM_START_CYCLE(ROOT, ELEMENT) \104 const TiXmlElement* ELEMENT; \105 ELEMENT= ROOT->FirstChildElement(); \106 while( ELEMENT != NULL) \107 {108 /**109 * closes a LoadParam Loop110 * @see LOAD_PARAM_START_CYCLE111 * @param ELEMENT the Element to step through.112 */113 #define LOAD_PARAM_END_CYCLE(ELEMENT) \114 ELEMENT = ELEMENT->NextSiblingElement(); \115 }116 116 117 117 -
trunk/src/util/track/track_manager.cc
r5644 r5654 398 398 double x, y, z, d; 399 399 400 LOAD_PARAM_START_CYCLE(root, element) 401 402 LoadParam<TrackManager>(element, "WorkOn", this, &TrackManager::workOnS, true) 400 LOAD_PARAM_START_CYCLE(root, element); 401 { 402 403 LoadParam_CYCLE(element, "WorkOn", this, TrackManager, workOnS) 403 404 .describe("Selects a TrackElement (by name) to work on"); 404 405 405 LoadParam<TrackManager>(element, "Point", this, &TrackManager::addPoint, true)406 LoadParam_CYCLE(element, "Point", this, TrackManager, addPoint) 406 407 .describe("Adds a new Point to the currently selected TrackElement"); 407 408 408 LoadParam<TrackManager>(element, "Duration", this, &TrackManager::setDuration, true)409 LoadParam_CYCLE(element, "Duration", this, TrackManager, setDuration) 409 410 .describe("Sets the Duration of the currently selected TrackElement"); 410 411 411 LoadParam<TrackManager>(element, "HotPoint", this, &TrackManager::addHotPoint, true)412 LoadParam_CYCLE(element, "HotPoint", this, TrackManager, addHotPoint) 412 413 .describe("Sets a new Point that acts as a hot point. meaning, the curve will flow through this Point"); 413 414 414 LoadParam<TrackManager>(element, "SavePoint", this, &TrackManager::setSavePointS, true)415 LoadParam_CYCLE(element, "SavePoint", this, TrackManager, setSavePointS) 415 416 .describe("Sets the current selected Point to a Savepoint, meaning that the curve will be ended and a new one starts, and that one starts again from this point on"); 416 417 417 LoadParam<TrackManager>(element, "Fork", this, &TrackManager::forkS, true)418 LoadParam_CYCLE(element, "Fork", this, TrackManager, forkS) 418 419 .describe("Forks the Path into multiple forked Path names seperated by ','"); 419 420 420 LoadParam<TrackManager>(element, "Join", this, &TrackManager::joinS, true)421 LoadParam_CYCLE(element, "Join", this, TrackManager, joinS) 421 422 .describe("Joins multiple joining Path names seperated by ','"); 422 423 423 424 /* 424 425 426 427 425 if( !strcmp( element->Value(), "Fork")) 426 { 427 container = element->FirstChild(); 428 if( container->ToText()) 428 429 { 429 430 assert( container->Value() != NULL); … … 445 446 } 446 447 */ 447 LOAD_PARAM_END_CYCLE(element); 448 } 449 LOAD_PARAM_END_CYCLE(element); 448 450 } 449 451
Note: See TracChangeset
for help on using the changeset viewer.