Changeset 5654 in orxonox.OLD for trunk/src/util/loading
- Timestamp:
- Nov 20, 2005, 9:12:50 PM (19 years ago)
- Location:
- trunk/src/util/loading
- Files:
-
- 2 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
Note: See TracChangeset
for help on using the changeset viewer.