Changeset 9727 in orxonox.OLD for branches/new_class_id/src/lib/util/executor/executor_xml.h
- Timestamp:
- Sep 14, 2006, 5:24:31 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/new_class_id/src/lib/util/executor/executor_xml.h
r8362 r9727 19 19 * What must be defined is a XML-root to search the ParameterName under an a Function to call. 20 20 */ 21 template<class T> class ExecutorXML : public Executor 21 template<class T> class ExecutorXML : public Executor<const TiXmlElement*> 22 22 { 23 24 23 public: 24 /** 25 25 * @brief Constructor of a ExecutorXML 26 27 28 29 30 ExecutorXML(void(T::*function)(const TiXmlElement*), const TiXmlElement* root, const char*paramName)31 : Executor (MT_EXT1)32 33 PRINTF(4)("Loading %s from XML-element %p\n", paramName, root);26 * @param function a Function to call 27 * @param root The XML root to search paramName under 28 * @param paramName the ParameterName the search in root, and lookup the TiXmlElement from 29 */ 30 ExecutorXML(void(T::*function)(const TiXmlElement*), const TiXmlElement* root, const std::string& paramName) 31 : Executor<const TiXmlElement*>(false, MT_EXT1) 32 { 33 PRINTF(4)("Loading %s from XML-element %p\n", paramName.c_str(), root); 34 34 35 if (likely(root != NULL && paramName!= NULL))36 37 38 35 if (likely(root != NULL)) 36 this->element = root->FirstChildElement(paramName); 37 else 38 this->element = NULL; 39 39 40 this->functionPointer = function; 41 this->functorType = Executor_Objective | Executor_NoLoadString; 42 } 40 this->paramName = paramName; 41 this->functionPointer = function; 42 this->functorType = Executor_Objective; 43 } 43 44 44 /** 45 * @brief clones an ExecutorXML, used to copy this Element. 46 * @returns a _new_ Copy of this Executor 47 */ 48 virtual Executor* clone () const 49 { 50 ExecutorXML<T>* executor = new ExecutorXML<T>(); 51 this->cloning(executor); 52 executor->functionPointer = this->functionPointer; 53 executor->element = this->element; 54 return executor; 55 } 45 /** 46 * @brief clones an ExecutorXML, used to copy this Element. 47 * @returns a _new_ Copy of this Executor 48 */ 49 virtual Executor<const TiXmlElement*>* clone () const 50 { 51 return new ExecutorXML<T>(functionPointer, element, paramName); 52 } 56 53 57 /** 58 * @brief executes the Command on BaseObject 59 * @param object the BaseObject to execute this Executor on 60 * @param loadString ignored in this case 61 */ 62 virtual void operator()(BaseObject* object, const SubString& = SubString()) const 63 { 64 if (object != NULL && this->element != NULL) 65 (dynamic_cast<T*>(object)->*(functionPointer))(this->element); 66 } 54 /** 55 * @brief executes the Command on BaseObject 56 * @param object the BaseObject to execute this Executor on 57 * @param root ignored in this case 58 */ 59 virtual void operator()(BaseObject* object, const TiXmlElement*& element) const 60 { 61 assert (object != NULL); 62 if (this->element != NULL) 63 (dynamic_cast<T*>(object)->*(functionPointer))(this->element); 64 } 67 65 68 virtual void operator()(BaseObject* object, int& count, void* values) const 69 { 70 PRINTF(1)("missuse of XML-operator, OR IMPLEMENT.\n"); 71 } 72 73 private: 74 /** 75 * @brief used for the copy-(Clone)-constructor 76 */ 77 ExecutorXML() : Executor() { }; 78 79 80 private: 81 void (T::*functionPointer)(const TiXmlElement*); //!< The functionPointer to the function to be called 82 const TiXmlElement* element; //!< The XML-element to call. 66 private: 67 void (T::*functionPointer)(const TiXmlElement*); //!< The functionPointer to the function to be called 68 const TiXmlElement* element; //!< The XML-element to call. 69 std::string paramName; 83 70 }; 84 71
Note: See TracChangeset
for help on using the changeset viewer.