Changeset 9684 in orxonox.OLD for branches/new_class_id/src/lib/lang/base_object.cc
- Timestamp:
- Aug 22, 2006, 1:34:31 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/new_class_id/src/lib/lang/base_object.cc
r9406 r9684 20 20 21 21 #include "util/loading/load_param.h" 22 #include "class_list.h"23 22 24 23 /** … … 28 27 BaseObject::BaseObject(const std::string& objectName) 29 28 { 30 this->classID = CL_BASE_OBJECT;31 29 this->className = "BaseObject"; 32 30 33 31 this->objectName = objectName; 34 this->classList = NULL;35 32 this->xmlElem = NULL; 36 33 … … 43 40 BaseObject::~BaseObject () 44 41 { 45 ClassList::removeFromClassList(this); 42 /// Remove from the NewObjectLists 43 ClassList::iterator it; 44 for (it = this->_classes.begin(); it != this->_classes.end(); ++it) 45 { 46 (*it)._objectList->unregisterObject((*it)._iterator); 47 delete (*it)._iterator; 48 } 46 49 47 50 if (this->xmlElem != NULL) … … 69 72 70 73 /** 71 * @brief sets the class identifiers72 * @param id a number for the class from class_id.h enumeration73 * @param className the class name74 */75 void BaseObject::setClassID(ClassID classID, const std::string& className)76 {77 //printf("%s(0x%.8X)->%s(0x%.8X)\n", this->className, this->classID, className, classID);78 assert (!(this->classID & classID & !CL_MASK_SUBSUPER_CLASS_IDA ));79 80 this->leafClassID = classID;81 this->classID |= (long)classID;82 this->className = className;83 84 this->classList = ClassList::addToClassList(this, classID, this->classID, className);85 }86 87 88 /**89 74 * @brief set the name of the Object 90 75 * @param objectName The new name of the Object. … … 97 82 98 83 /** 99 * @brief queries for the ClassID of the Leaf Class (the last made class of this type 100 * @returns the ClassID of the Leaf Class (e.g. the ID of the Class) 101 * 102 * the returned ID can be used to generate new Objects of the same type through 103 * Factory::fabricate(Object->getLeafClassID()); 84 * @brief Seeks in the Inheritance if it matches objectList. 85 * @param objectList The ObjectList this should be a member of (by Pointer-comparison). 86 * @return True if found, false if not. 104 87 */ 105 const ClassID& BaseObject::getLeafClassID() const88 bool BaseObject::isA(const NewObjectListBase& objectList) const 106 89 { 107 return this->leafClassID; 90 ClassList::const_iterator it; 91 for (it = this->_classes.begin(); it != this->_classes.end(); ++it) 92 if ((*it)._objectList == &objectList) 93 return true; 94 return false; 108 95 } 109 96 110 97 /** 98 * @brief Seeks in the Inheritance if it matches objectList. 99 * @param classID The ClassID of the class this should be a member of. 100 * @return True if found, false if not. 101 */ 102 bool BaseObject::isA(int classID) const 103 { 104 ClassList::const_iterator it; 105 for (it = this->_classes.begin(); it != this->_classes.end(); ++it) 106 if (*(*it)._objectList == classID) 107 return true; 108 return false; 109 } 111 110 112 111 /** 113 * @brief checks if the class is a classID114 * @param class ID the Identifier to check for115 * @return s true if it is, false otherwise116 */117 bool BaseObject::isA (ClassID classID) const112 * @brief Seeks in the Inheritance if it matches objectList. 113 * @param className The ClassName of the class this should be a member of. 114 * @return True if found, false if not. 115 */ 116 bool BaseObject::isA(const std::string& className) const 118 117 { 119 // if classID is a derivable object from a SUPERCLASS 120 if (classID & CL_MASK_SUPER_CLASS) 121 { 122 if( likely(this->classID & classID)) 118 ClassList::const_iterator it; 119 for (it = this->_classes.begin(); it != this->_classes.end(); ++it) 120 if (*(*it)._objectList == className) 123 121 return true; 124 }125 // if classID is a SubSuperClass, and126 else if (classID & CL_MASK_SUBSUPER_CLASS)127 {128 if (likely(((this->classID & CL_MASK_SUBSUPER_CLASS_IDA) == (classID & CL_MASK_SUBSUPER_CLASS_IDA)) &&129 this->classID & classID & CL_MASK_SUBSUPER_CLASS_IDB))130 return true;131 }132 // if classID is a LOWLEVEL-class133 else134 {135 if( likely((this->classID & CL_MASK_LOWLEVEL_CLASS) == classID))136 return true;137 }138 122 return false; 139 123 } 140 124 141 125 126 void BaseObject::listInheritance() const 127 { 128 PRINT(0)("Listing inheritance diagram for ....: "); 129 ClassList::const_iterator it; 130 for (it = this->_classes.begin(); it != this->_classes.end(); ++it) 131 PRINT(0)(" -> %s(id:%d)", (*it)._objectList->name().c_str(), (*it)._objectList->id()); 132 PRINT(0)("\n"); 142 133 143 /**144 * @brief checks if the class is a classID145 * @param classID the Identifier to check for146 * @returns true if it is, false otherwise147 */148 bool BaseObject::isA (const std::string& className) const149 {150 ClassID classID = ClassList::StringToID(className);151 if (classID != CL_NULL)152 return this->isA(classID);153 else154 return false;155 134 } 156 157 158 /**159 * @brief compares the ObjectName with an external name160 * @param objectName: the name to check.161 * @returns true on match, false otherwise.162 */163 bool BaseObject::operator==(const std::string& objectName) const164 {165 return (this->objectName == objectName);166 }167
Note: See TracChangeset
for help on using the changeset viewer.