Changeset 1592 for code/branches/core3/src/core
- Timestamp:
- Jun 12, 2008, 4:32:10 AM (17 years ago)
- Location:
- code/branches/core3/src/core
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/core3/src/core/BaseObject.cc
r1559 r1592 66 66 67 67 /** 68 @brief load general xml paramters69 */70 void BaseObject::loadParams(TiXmlElement* xmlElem)71 {72 if (xmlElem->Attribute("name"))73 {74 this->setName(xmlElem->Attribute("name"));75 }76 }77 78 /**79 68 @brief XML loading and saving. 80 69 @param xmlelement The XML-element -
code/branches/core3/src/core/BaseObject.h
r1558 r1592 52 52 BaseObject(); 53 53 virtual ~BaseObject(); 54 virtual void loadParams(TiXmlElement* xmlElem);55 54 virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); 56 55 -
code/branches/core3/src/core/Functor.h
r1586 r1592 80 80 CreateTypeToStringTemplate(Degree); 81 81 82 template <> \83 inline std::string typeToString<std::string>() { return "string"; } \84 template <> \85 inline std::string typeToString<std::string&>() { return "string"; } \86 template <> \87 inline std::string typeToString<const std::string>() { return "string"; } \88 template <> \82 template <> 83 inline std::string typeToString<std::string>() { return "string"; } 84 template <> 85 inline std::string typeToString<std::string&>() { return "string"; } 86 template <> 87 inline std::string typeToString<const std::string>() { return "string"; } 88 template <> 89 89 inline std::string typeToString<const std::string&>() { return "string"; } 90 90 -
code/branches/core3/src/core/Identifier.cc
r1591 r1592 42 42 #include "ObjectList.h" 43 43 #include "OrxonoxClass.h" 44 #include "XMLPort.h" 44 45 45 46 namespace orxonox … … 206 207 207 208 /** 209 @brief Tells the container to which Identifier it belongs to. 210 */ 211 void Identifier::addXMLPortParamContainer(const std::string& paramname, XMLPortParamContainer* container) 212 { 213 container->setIdentifier(this); 214 } 215 216 /** 208 217 @brief Returns true, if the Identifier is at least of the given type. 209 218 @param identifier The identifier to compare with -
code/branches/core3/src/core/Identifier.h
r1591 r1592 206 206 ConfigValueContainer* getLowercaseConfigValueContainer(const std::string& varname); 207 207 208 virtual void addXMLPortParamContainer(const std::string& paramname, XMLPortParamContainer* container) = 0;208 virtual void addXMLPortParamContainer(const std::string& paramname, XMLPortParamContainer* container); 209 209 virtual XMLPortParamContainer* getXMLPortParamContainer(const std::string& paramname) = 0; 210 210 … … 313 313 ~ClassIdentifier() {} // don't delete 314 314 315 std::map<std::string, XMLPortClassParamContainer< T>*> xmlportParamContainers_; //!< All loadable parameters315 std::map<std::string, XMLPortClassParamContainer<class O>*> xmlportParamContainers_; //!< All loadable parameters 316 316 std::map<std::string, XMLPortClassObjectContainer<T, class O>*> xmlportObjectContainers_; //!< All attachable objects 317 317 … … 427 427 XMLPortParamContainer* ClassIdentifier<T>::getXMLPortParamContainer(const std::string& paramname) 428 428 { 429 typename std::map<std::string, XMLPortClassParamContainer< T>*>::const_iterator it = xmlportParamContainers_.find(paramname);429 typename std::map<std::string, XMLPortClassParamContainer<class O>*>::const_iterator it = xmlportParamContainers_.find(paramname); 430 430 if (it != xmlportParamContainers_.end()) 431 431 return (XMLPortParamContainer*)((*it).second); … … 442 442 void ClassIdentifier<T>::addXMLPortParamContainer(const std::string& paramname, XMLPortParamContainer* container) 443 443 { 444 this->xmlportParamContainers_[paramname] = (XMLPortClassParamContainer<T>*)container; 444 Identifier::addXMLPortParamContainer(paramname, container); 445 this->xmlportParamContainers_[paramname] = (XMLPortClassParamContainer<class O>*)container; 445 446 } 446 447 -
code/branches/core3/src/core/XMLPort.h
r1586 r1592 42 42 43 43 #define XMLPortParam(classname, paramname, loadfunction, savefunction, xmlelement, mode) \ 44 XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, paramname, orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), #loadfunction), orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction),#savefunction), xmlelement, mode)45 #define XMLPortParam _Template(classname, paramname, loadtemplate, loadfunction, savetemplate, savefunction, xmlelement, mode) \46 XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, paramname, orxonox::createExecutor(orxonox::createFunctor loadtemplate (&classname::loadfunction), #loadfunction), orxonox::createExecutor(orxonox::createFunctor savetemplate (&classname::savefunction),#savefunction), xmlelement, mode)44 XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, this, paramname, orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction), orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction), xmlelement, mode) 45 #define XMLPortParamTemplate(classname, paramname, loadfunction, savefunction, xmlelement, mode, ...) \ 46 XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, this, paramname, orxonox::createExecutor(orxonox::createFunctor< __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction), orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction), xmlelement, mode) 47 47 48 48 #define XMLPortParamLoadOnly(classname, paramname, loadfunction, xmlelement, mode) \ 49 XMLPortParamGeneric(xmlcontainer##loadfunction##0, classname, paramname, orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), #loadfunction), 0, xmlelement, mode) 50 #define XMLPortParamLoadOnly_Template(classname, paramname, loadtemplate, loadfunction, xmlelement, mode) \ 51 XMLPortParamGeneric(xmlcontainer##loadfunction##0, classname, paramname, orxonox::createExecutor(orxonox::createFunctor loadtemplate (&classname::loadfunction), #loadfunction), 0, xmlelement, mode) 52 53 #define XMLPortParamGeneric(containername, classname, paramname, loadexecutor, saveexecutor, xmlelement, mode) \ 49 XMLPortParamGeneric(xmlcontainer##loadfunction##0, classname, this, paramname, orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction), 0, xmlelement, mode) 50 #define XMLPortParamLoadOnlyTemplate(classname, paramname, loadfunction, xmlelement, mode, ...) \ 51 XMLPortParamGeneric(xmlcontainer##loadfunction##0, classname, this, paramname, orxonox::createExecutor(orxonox::createFunctor< __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction), 0, xmlelement, mode) 52 53 #define XMLPortParamExtern(classname, object, paramname, loadfunction, savefunction, xmlelement, mode) \ 54 XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, object, paramname, orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction), orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction), xmlelement, mode); 55 #define XMLPortParamExternTemplate(classname, object, paramname, loadfunction, savefunction, xmlelement, mode, ...) \ 56 XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, object, paramname, orxonox::createExecutor(orxonox::createFunctor< __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction), orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction), xmlelement, mode); 57 58 #define XMLPortParamGeneric(containername, classname, object, paramname, loadexecutor, saveexecutor, xmlelement, mode) \ 54 59 orxonox::XMLPortClassParamContainer<classname>* containername = (orxonox::XMLPortClassParamContainer<classname>*)(this->getIdentifier()->getXMLPortParamContainer(paramname)); \ 55 60 if (!containername) \ … … 58 63 this->getIdentifier()->addXMLPortParamContainer(paramname, containername); \ 59 64 } \ 60 containername->port( this, xmlelement, mode)65 containername->port(object, xmlelement, mode) 61 66 62 67 63 68 #define XMLPortObject(classname, objectclass, sectionname, loadfunction, savefunction, xmlelement, mode, bApplyLoaderMask, bLoadBefore) \ 64 XMLPortObjectGeneric(xmlcontainer##loadfunction##savefunction, classname, objectclass, sectionname, orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), #loadfunction), orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction),#savefunction), xmlelement, mode, bApplyLoaderMask, bLoadBefore)65 #define XMLPortObject _Template(classname, objectclass, sectionname, loadtemplate, loadfunction, savetemplate, savefunction, xmlelement, mode, bApplyLoaderMask, bLoadBefore) \66 XMLPortObjectGeneric(xmlcontainer##loadfunction##savefunction, classname, objectclass, sectionname, orxonox::createExecutor(orxonox::createFunctor loadtemplate (&classname::loadfunction), #loadfunction), orxonox::createExecutor(orxonox::createFunctor savetemplate (&classname::savefunction),#savefunction), xmlelement, mode, bApplyLoaderMask, bLoadBefore)69 XMLPortObjectGeneric(xmlcontainer##loadfunction##savefunction, classname, objectclass, sectionname, orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction), orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction), xmlelement, mode, bApplyLoaderMask, bLoadBefore) 70 #define XMLPortObjectTemplate(classname, objectclass, sectionname, loadfunction, savefunction, xmlelement, mode, bApplyLoaderMask, bLoadBefore, ...) \ 71 XMLPortObjectGeneric(xmlcontainer##loadfunction##savefunction, classname, objectclass, sectionname, orxonox::createExecutor(orxonox::createFunctor< __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction), orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction), xmlelement, mode, bApplyLoaderMask, bLoadBefore) 67 72 68 73 #define XMLPortObjectGeneric(containername, classname, objectclass, sectionname, loadexecutor, saveexecutor, xmlelement, mode, bApplyLoaderMask, bLoadBefore) \ … … 98 103 inline const std::string& getName() const 99 104 { return this->paramname_; } 105 inline void setIdentifier(Identifier* identifier) 106 { this->identifier_ = identifier; } 100 107 101 108 virtual XMLPortParamContainer& description(const std::string description) = 0; … … 112 119 std::string paramname_; 113 120 ParseResult parseResult_; 114 121 Identifier* identifier_; 115 122 }; 116 123 … … 146 153 if ((attribute.size() > 0) || (this->loadexecutor_->allDefaultValuesSet())) 147 154 { 148 COUT(5) << ((BaseObject*)object)->getLoaderIndentation() << "Loading parameter " << this->paramname_ << " in " << object->getIdentifier()->getName() << " (objectname " << ((BaseObject*)object)->getName() << ")." << std::endl << ((BaseObject*)object)->getLoaderIndentation();155 COUT(5) << ((BaseObject*)object)->getLoaderIndentation() << "Loading parameter " << this->paramname_ << " in " << this->identifier_->getName() << " (objectname " << ((BaseObject*)object)->getName() << ")." << std::endl << ((BaseObject*)object)->getLoaderIndentation(); 149 156 if (this->loadexecutor_->parse(object, attribute, ",")) 150 157 this->parseResult_ = PR_finished; … … 156 163 { 157 164 COUT(1) << std::endl; 158 COUT(1) << "An error occurred in XMLPort.h while loading attribute '" << this->paramname_ << "' of '" << object->getIdentifier()->getName() << "' (objectname: " << ((BaseObject*)object)->getName() << ") in " << ((BaseObject*)object)->getLevelfile() << ":" << std::endl;165 COUT(1) << "An error occurred in XMLPort.h while loading attribute '" << this->paramname_ << "' of '" << this->identifier_->getName() << "' (objectname: " << ((BaseObject*)object)->getName() << ") in " << ((BaseObject*)object)->getLevelfile() << ":" << std::endl; 159 166 COUT(1) << ex.what() << std::endl; 160 167 }
Note: See TracChangeset
for help on using the changeset viewer.