Changeset 5110 in orxonox.OLD for trunk/src/lib
- Timestamp:
- Aug 23, 2005, 11:07:40 PM (19 years ago)
- Location:
- trunk/src/lib
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/collision_detection/cd_engine.cc
r5047 r5110 80 80 tIterator<WorldEntity>* iterator1 = entityList->getIterator(); 81 81 tIterator<WorldEntity>* iterator2 = entityList->getIterator(); 82 WorldEntity* entity1 = iterator1-> nextElement();82 WorldEntity* entity1 = iterator1->firstElement(); 83 83 WorldEntity* entity2 = iterator2->seekElement(entity1); 84 84 PRINTF(3)("checking for collisions\n"); 85 while( entity1 != NULL)85 /* while( entity1 != NULL) 86 86 { 87 87 if( likely(entity1 != this->terrain)) … … 101 101 entity2 = iterator2->seekElement(entity1); 102 102 103 } 103 }*/ 104 104 delete iterator1; 105 105 delete iterator2; … … 133 133 134 134 tIterator<WorldEntity>* iterator = entityList->getIterator(); 135 WorldEntity* entity = iterator-> nextElement();135 WorldEntity* entity = iterator->firstElement(); 136 136 while( entity != NULL) 137 137 { -
trunk/src/lib/collision_detection/obb_tree_node.cc
r5046 r5110 574 574 575 575 iterator = partition1.getIterator(); 576 element = iterator-> nextElement();576 element = iterator->firstElement(); 577 577 index = 0; 578 578 while( element != NULL) … … 592 592 593 593 iterator = partition2.getIterator(); 594 element = iterator-> nextElement();594 element = iterator->firstElement(); 595 595 index = 0; 596 596 while( element != NULL) -
trunk/src/lib/coord/p_node.cc
r5108 r5110 79 79 { 80 80 tIterator<PNode>* iterator = this->children->getIterator(); 81 PNode* pn = iterator-> nextElement();81 PNode* pn = iterator->firstElement(); 82 82 while( pn != NULL) 83 83 { … … 435 435 436 436 tIterator<PNode>* iterator = this->children->getIterator(); 437 PNode* pn = iterator-> nextElement();437 PNode* pn = iterator->firstElement(); 438 438 439 439 while( pn != NULL) … … 605 605 { 606 606 tIterator<PNode>* iterator = this->children->getIterator(); 607 PNode* pn = iterator-> nextElement();607 PNode* pn = iterator->firstElement(); 608 608 while( pn != NULL) 609 609 { … … 615 615 616 616 pn->update(dt); 617 //pn = this->children->nextElement();618 617 pn = iterator->nextElement(); 619 618 } … … 656 655 tIterator<PNode>* iterator = this->children->getIterator(); 657 656 //PNode* pn = this->children->enumerate (); 658 PNode* pn = iterator-> nextElement();657 PNode* pn = iterator->firstElement(); 659 658 while( pn != NULL) 660 659 { … … 722 721 if (depth >= 2 || depth == 0) 723 722 { 723 Vector childColor = Color::HSVtoRGB(Color::RGBtoHSV(color)+Vector(20,0,.0)); 724 724 725 tIterator<PNode>* iterator = this->children->getIterator(); 725 //PNode* pn = this->children->enumerate (); 726 Vector childColor = Color::HSVtoRGB(Color::RGBtoHSV(color)+Vector(20,0,.0)); 727 PNode* pn = iterator->nextElement(); 726 PNode* pn = iterator->firstElement(); 728 727 while( pn != NULL) 729 728 { -
trunk/src/lib/graphics/importer/model.cc
r4844 r5110 192 192 193 193 tIterator<Material>* tmpIt = this->materialList->getIterator(); 194 Material* material = tmpIt-> nextElement();194 Material* material = tmpIt->firstElement(); 195 195 //! @todo do we really have to delete this material?? 196 196 while(material) … … 413 413 { 414 414 tIterator<Material>* tmpIt = this->materialList->getIterator(); 415 Material* material = tmpIt-> nextElement();415 Material* material = tmpIt->firstElement(); 416 416 while(material) 417 417 { -
trunk/src/lib/graphics/render2D/element_2d.cc
r5108 r5110 55 55 56 56 tIterator<Element2D>* iterator = this->children->getIterator(); 57 Element2D* pn = iterator-> nextElement();57 Element2D* pn = iterator->firstElement(); 58 58 while( pn != NULL) 59 59 { … … 479 479 { 480 480 tIterator<Element2D>* iterator = this->children->getIterator(); 481 Element2D* pn = iterator-> nextElement();481 Element2D* pn = iterator->firstElement(); 482 482 483 483 while( pn != NULL) … … 687 687 { 688 688 tIterator<Element2D>* iterator = this->children->getIterator(); 689 Element2D* pn = iterator-> nextElement();689 Element2D* pn = iterator->firstElement(); 690 690 while( pn != NULL) 691 691 { … … 697 697 698 698 pn->update2D(dt); 699 //pn = this->children->nextElement();700 699 pn = iterator->nextElement(); 701 700 } … … 735 734 { 736 735 tIterator<Element2D>* iterator = this->children->getIterator(); 737 Element2D* pn = iterator-> nextElement();736 Element2D* pn = iterator->firstElement(); 738 737 while( pn != NULL) 739 738 { -
trunk/src/lib/graphics/render2D/render_2d.cc
r5078 r5110 105 105 { 106 106 tIterator<Element2D>* iterator = this->element2DList[i]->getIterator(); 107 Element2D* elem = iterator-> nextElement();107 Element2D* elem = iterator->firstElement(); 108 108 while (elem != NULL) 109 109 { … … 131 131 { 132 132 tIterator<Element2D>* iterator = this->element2DList[i]->getIterator(); 133 Element2D* elem = iterator-> nextElement();133 Element2D* elem = iterator->firstElement(); 134 134 while (elem != NULL) 135 135 { -
trunk/src/lib/graphics/spatial_separation/quadtree_node.cc
r5075 r5110 253 253 counter = 0; 254 254 iterator = listA->getIterator(); 255 tempTri = iterator-> nextElement();255 tempTri = iterator->firstElement(); 256 256 while( tempTri) 257 257 { … … 262 262 counter = 0; 263 263 iterator = listB->getIterator(); 264 tempTri = iterator-> nextElement();264 tempTri = iterator->firstElement(); 265 265 while( tempTri) 266 266 { … … 271 271 counter = 0; 272 272 iterator = listC->getIterator(); 273 tempTri = iterator-> nextElement();273 tempTri = iterator->firstElement(); 274 274 while( tempTri) 275 275 { … … 280 280 counter = 0; 281 281 iterator = listD->getIterator(); 282 tempTri = iterator-> nextElement();282 tempTri = iterator->firstElement(); 283 283 while( tempTri) 284 284 { -
trunk/src/lib/graphics/text_engine.cc
r5106 r5110 845 845 846 846 tIterator<BaseObject>* textIterator = ClassList::getList(CL_TEXT)->getIterator(); 847 Text* text = dynamic_cast<Text*>(textIterator-> nextElement());847 Text* text = dynamic_cast<Text*>(textIterator->firstElement()); 848 848 while( text != NULL) 849 849 { -
trunk/src/lib/lang/class_list.cc
r5106 r5110 208 208 { 209 209 tIterator<BaseObject>* iterator = tmp->objectList->getIterator(); 210 BaseObject* enumBO = iterator-> nextElement();210 BaseObject* enumBO = iterator->firstElement(); 211 211 const char* tmpName; 212 212 while (enumBO != NULL) … … 249 249 { 250 250 tIterator<BaseObject>* iterator = tmp->objectList->getIterator(); 251 BaseObject* enumBO = iterator-> nextElement();251 BaseObject* enumBO = iterator->firstElement(); 252 252 while (enumBO != NULL) 253 253 { … … 362 362 PRINT(0)("| Listing Instances:\n"); 363 363 tIterator<BaseObject>* iterator = tmp->objectList->getIterator(); 364 BaseObject* enumBO = iterator-> nextElement();364 BaseObject* enumBO = iterator->firstElement(); 365 365 while (enumBO) 366 366 { -
trunk/src/lib/particles/particle_engine.cc
r4836 r5110 53 53 // delete all remaining systems 54 54 tIterator<ParticleSystem>* sysIt = this->systemList->getIterator(); 55 ParticleSystem* tmpSys = sysIt-> nextElement();55 ParticleSystem* tmpSys = sysIt->firstElement(); 56 56 while(tmpSys) 57 57 { … … 64 64 // delete all remaining emitters 65 65 tIterator<ParticleEmitter>* emitIt = this->emitterList->getIterator(); 66 ParticleEmitter* tmpEmit = emitIt-> nextElement();66 ParticleEmitter* tmpEmit = emitIt->firstElement(); 67 67 while(tmpEmit) 68 68 { … … 147 147 // look, if we have already added this connection 148 148 tIterator<ParticleConnection>* tmpConIt = connectionList->getIterator(); 149 ParticleConnection* tmpConnection = tmpConIt-> nextElement();149 ParticleConnection* tmpConnection = tmpConIt->firstElement(); 150 150 while(tmpConnection) 151 151 { … … 178 178 // remove any connections, that have this system within 179 179 tIterator<ParticleConnection>* tmpConIt = connectionList->getIterator(); 180 ParticleConnection* tmpConnection = tmpConIt-> nextElement();180 ParticleConnection* tmpConnection = tmpConIt->firstElement(); 181 181 while(tmpConnection) 182 182 { … … 199 199 // remove any connections, that have this emitter within 200 200 tIterator<ParticleConnection>* tmpConIt = connectionList->getIterator(); 201 ParticleConnection* tmpConnection = tmpConIt-> nextElement();201 ParticleConnection* tmpConnection = tmpConIt->firstElement(); 202 202 while(tmpConnection) 203 203 { … … 224 224 // look, if we have already added this connection 225 225 tIterator<ParticleConnection>* tmpConIt = connectionList->getIterator(); 226 ParticleConnection* tmpConnection = tmpConIt-> nextElement();226 ParticleConnection* tmpConnection = tmpConIt->firstElement(); 227 227 while(tmpConnection) 228 228 { … … 260 260 // ticks all the ParticleSystems 261 261 tIterator<ParticleSystem>* tmpIt = systemList->getIterator(); 262 ParticleSystem* tmpSys = tmpIt-> nextElement();262 ParticleSystem* tmpSys = tmpIt->firstElement(); 263 263 while(tmpSys) 264 264 { … … 270 270 // add new Particles to each System connected to an Emitter. 271 271 tIterator<ParticleConnection>* tmpConIt = connectionList->getIterator(); 272 ParticleConnection* tmpConnection = tmpConIt-> nextElement();272 ParticleConnection* tmpConnection = tmpConIt->firstElement(); 273 273 while(tmpConnection) 274 274 { … … 285 285 { 286 286 tIterator<ParticleSystem>* tmpIt = systemList->getIterator(); 287 ParticleSystem* tmpSys = tmpIt-> nextElement();287 ParticleSystem* tmpSys = tmpIt->firstElement(); 288 288 while(tmpSys) 289 289 { … … 302 302 { 303 303 tIterator<ParticleSystem>* tmpIt = systemList->getIterator(); 304 ParticleSystem* tmpSys = tmpIt-> nextElement();304 ParticleSystem* tmpSys = tmpIt->firstElement(); 305 305 while(tmpSys) 306 306 { … … 324 324 int count = 0; 325 325 tIterator<ParticleSystem>* tmpIt = systemList->getIterator(); 326 ParticleSystem* tmpSys = tmpIt-> nextElement();326 ParticleSystem* tmpSys = tmpIt->firstElement(); 327 327 while(tmpSys) 328 328 { … … 346 346 { 347 347 tIterator<ParticleEmitter>* tmpIt = emitterList->getIterator(); 348 ParticleEmitter* tmpEmit = tmpIt-> nextElement();348 ParticleEmitter* tmpEmit = tmpIt->firstElement(); 349 349 while(tmpEmit) 350 350 { … … 369 369 int count = 0; 370 370 tIterator<ParticleEmitter>* tmpIt = emitterList->getIterator(); 371 ParticleEmitter* tmpEmit = tmpIt-> nextElement();371 ParticleEmitter* tmpEmit = tmpIt->firstElement(); 372 372 while(tmpEmit) 373 373 { … … 402 402 403 403 tIterator<ParticleConnection>* tmpConIt = connectionList->getIterator(); 404 ParticleConnection* tmpConnection = tmpConIt-> nextElement();404 ParticleConnection* tmpConnection = tmpConIt->firstElement(); 405 405 while(tmpConnection) 406 406 { … … 414 414 { 415 415 tIterator<ParticleSystem>* tmpIt = systemList->getIterator(); 416 ParticleSystem* tmpSys = tmpIt-> nextElement();416 ParticleSystem* tmpSys = tmpIt->firstElement(); 417 417 while(tmpSys) 418 418 { … … 429 429 { 430 430 tIterator<ParticleEmitter>* tmpIt = emitterList->getIterator(); 431 ParticleEmitter* tmpEmit = tmpIt-> nextElement();431 ParticleEmitter* tmpEmit = tmpIt->firstElement(); 432 432 while(tmpEmit) 433 433 { -
trunk/src/lib/physics/physics_engine.cc
r4836 r5110 52 52 { 53 53 // delete all PhysicsConnections that are still in existence 54 tIterator<PhysicsConnection>* itPC = this->connections->getIterator();55 PhysicsConnection* enumPC = itPC->nextElement();56 while (enumPC)57 {58 delete enumPC;59 enumPC = itPC->nextElement();60 }61 delete itPC;62 delete this->connections;63 64 // delete all PhysicsInterfaces, still in existence (this could be dangerous)65 tIterator<PhysicsInterface>* itPI = this->interfaces->getIterator();66 PhysicsInterface* enumPI = itPI->nextElement();67 while (enumPI)68 {69 delete enumPI;70 71 enumPI = itPI->nextElement();72 }73 delete itPI;74 delete this->interfaces;75 76 // delete all PhysicsFields, still in existence (this could be dangerous)77 tIterator<Field>* itF = this->fields->getIterator();78 Field* enumF = itF->nextElement();79 while (enumF)80 {81 delete enumF;82 83 enumF = itF->nextElement();84 }85 delete itF;86 delete this->fields;54 // tIterator<PhysicsConnection>* itPC = this->connections->getIterator(); 55 // PhysicsConnection* enumPC = itPC->firstElement(); 56 // while (enumPC) 57 // { 58 // delete enumPC; 59 // enumPC = itPC->nextElement(); 60 // } 61 // delete itPC; 62 // delete this->connections; 63 // 64 // // delete all PhysicsInterfaces, still in existence (this could be dangerous) 65 // tIterator<PhysicsInterface>* itPI = this->interfaces->getIterator(); 66 // PhysicsInterface* enumPI = itPI->firstElement(); 67 // while (enumPI) 68 // { 69 // delete enumPI; 70 // 71 // enumPI = itPI->nextElement(); 72 // } 73 // delete itPI; 74 // delete this->interfaces; 75 // 76 // // delete all PhysicsFields, still in existence (this could be dangerous) 77 // tIterator<Field>* itF = this->fields->getIterator(); 78 // Field* enumF = itF->firstElement(); 79 // while (enumF) 80 // { 81 // delete enumF; 82 // 83 // enumF = itF->nextElement(); 84 // } 85 // delete itF; 86 // delete this->fields; 87 87 88 88 … … 163 163 { 164 164 tIterator<PhysicsInterface>* tmpIt = interfaces->getIterator(); 165 PhysicsInterface* tmpInt = tmpIt-> nextElement();165 PhysicsInterface* tmpInt = tmpIt->firstElement(); 166 166 while(tmpInt) 167 167 { … … 206 206 { 207 207 tIterator<Field>* tmpIt = fields->getIterator(); 208 Field* tmpField = tmpIt-> nextElement();208 Field* tmpField = tmpIt->firstElement(); 209 209 while(tmpField) 210 210 { … … 251 251 { 252 252 tIterator<PhysicsConnection>* tmpIt = connections->getIterator(); 253 PhysicsConnection* tmpConn = tmpIt-> nextElement();253 PhysicsConnection* tmpConn = tmpIt->firstElement(); 254 254 while(tmpConn) 255 255 { … … 278 278 meaning let the fields work */ 279 279 tIterator<PhysicsConnection>* itPC = this->connections->getIterator(); 280 PhysicsConnection* enumPC = itPC-> nextElement();280 PhysicsConnection* enumPC = itPC->firstElement(); 281 281 while (enumPC) 282 282 { … … 289 289 /* actually tick all the PhysicsInterfaces. Move the objects around */ 290 290 tIterator<PhysicsInterface>* itPI = this->interfaces->getIterator(); 291 PhysicsInterface* enumPI = itPI-> nextElement();291 PhysicsInterface* enumPI = itPI->firstElement(); 292 292 while (enumPI) 293 293 { -
trunk/src/lib/physics/physics_interface.cc
r4836 r5110 68 68 69 69 tIterator<PNode>* iterator = massCalcPNode->children->getIterator(); 70 PNode* pn = iterator-> nextElement();70 PNode* pn = iterator->firstElement(); 71 71 while( pn != NULL) 72 72 { -
trunk/src/lib/sound/sound_engine.cc
r4986 r5110 215 215 { 216 216 tIterator<BaseObject>* sourceIterator = this->sourceList->getIterator(); 217 SoundSource* enumSource = (SoundSource*)sourceIterator-> nextElement();217 SoundSource* enumSource = (SoundSource*)sourceIterator->firstElement(); 218 218 while (enumSource) 219 219 { … … 228 228 { 229 229 tIterator<BaseObject>* bufferIterator = this->bufferList->getIterator(); 230 SoundBuffer* enumBuffer = (SoundBuffer*)bufferIterator-> nextElement();230 SoundBuffer* enumBuffer = (SoundBuffer*)bufferIterator->firstElement(); 231 231 while (enumBuffer) 232 232 { … … 298 298 // look if there are any sources that have the buffer still loaded 299 299 tIterator<BaseObject>* sourceIterator = this->sourceList->getIterator(); 300 SoundSource* enumSource = (SoundSource*)sourceIterator-> nextElement();300 SoundSource* enumSource = (SoundSource*)sourceIterator->firstElement(); 301 301 while (enumSource) 302 302 { … … 345 345 { 346 346 tIterator<BaseObject>* iterator = this->sourceList->getIterator(); 347 SoundSource* enumSource = (SoundSource*)iterator-> nextElement();347 SoundSource* enumSource = (SoundSource*)iterator->firstElement(); 348 348 while (enumSource) 349 349 { … … 373 373 { 374 374 tIterator<BaseObject>* bufferIterator = this->bufferList->getIterator(); 375 SoundBuffer* enumBuffer = (SoundBuffer*)bufferIterator-> nextElement();375 SoundBuffer* enumBuffer = (SoundBuffer*)bufferIterator->firstElement(); 376 376 while (enumBuffer) 377 377 { 378 378 tIterator<BaseObject>* sourceIterator = this->sourceList->getIterator(); 379 SoundSource* enumSource = (SoundSource*)sourceIterator-> nextElement();379 SoundSource* enumSource = (SoundSource*)sourceIterator->firstElement(); 380 380 while (enumSource) 381 381 { … … 401 401 { 402 402 tIterator<BaseObject>* bufferIterator = this->bufferList->getIterator(); 403 SoundBuffer* enumBuffer = (SoundBuffer*)bufferIterator-> nextElement();403 SoundBuffer* enumBuffer = (SoundBuffer*)bufferIterator->firstElement(); 404 404 while (enumBuffer) 405 405 { … … 419 419 { 420 420 tIterator<BaseObject>* Iterator = this->sourceList->getIterator(); 421 SoundSource* enumSource = (SoundSource*)Iterator-> nextElement();421 SoundSource* enumSource = (SoundSource*)Iterator->firstElement(); 422 422 while (enumSource) 423 423 { -
trunk/src/lib/util/ini_parser.cc
r5031 r5110 58 58 { 59 59 tIterator<IniSection>* sectionIt = this->sections->getIterator(); 60 IniSection* sectionEnum = sectionIt-> nextElement();60 IniSection* sectionEnum = sectionIt->firstElement(); 61 61 while (sectionEnum) 62 62 { 63 63 tIterator<IniEntry>* entryIt = sectionEnum->entries->getIterator(); 64 IniEntry* entryEnum = entryIt-> nextElement();64 IniEntry* entryEnum = entryIt->firstElement(); 65 65 while (entryEnum) 66 66 { … … 192 192 { 193 193 tIterator<IniSection>* sectionIt = this->sections->getIterator(); 194 IniSection* sectionEnum = sectionIt-> nextElement();194 IniSection* sectionEnum = sectionIt->firstElement(); 195 195 while (sectionEnum) 196 196 { … … 198 198 199 199 tIterator<IniEntry>* entryIt = sectionEnum->entries->getIterator(); 200 IniEntry* entryEnum = entryIt-> nextElement();200 IniEntry* entryEnum = entryIt->firstElement(); 201 201 while (entryEnum) 202 202 { … … 246 246 { 247 247 tIterator<IniSection>* sectionIt = this->sections->getIterator(); 248 IniSection* sectionEnum = sectionIt-> nextElement();248 IniSection* sectionEnum = sectionIt->firstElement(); 249 249 while (sectionEnum) 250 250 { … … 347 347 { 348 348 tIterator<IniSection>* sectionIt = this->sections->getIterator(); 349 IniSection* sectionEnum = sectionIt-> nextElement();349 IniSection* sectionEnum = sectionIt->firstElement(); 350 350 while (sectionEnum) 351 351 { … … 395 395 { 396 396 tIterator<IniSection>* sectionIt = this->sections->getIterator(); 397 IniSection* sectionEnum = sectionIt-> nextElement();397 IniSection* sectionEnum = sectionIt->firstElement(); 398 398 while (sectionEnum) 399 399 { … … 401 401 { 402 402 tIterator<IniEntry>* entryIt = sectionEnum->entries->getIterator(); 403 IniEntry* entryEnum = entryIt-> nextElement();403 IniEntry* entryEnum = entryIt->firstElement(); 404 404 while (entryEnum) 405 405 { … … 452 452 { 453 453 tIterator<IniSection>* sectionIt = this->sections->getIterator(); 454 IniSection* sectionEnum = sectionIt-> nextElement();454 IniSection* sectionEnum = sectionIt->firstElement(); 455 455 while (sectionEnum) 456 456 { … … 458 458 459 459 tIterator<IniEntry>* entryIt = sectionEnum->entries->getIterator(); 460 IniEntry* entryEnum = entryIt-> nextElement();460 IniEntry* entryEnum = entryIt->firstElement(); 461 461 while (entryEnum) 462 462 { -
trunk/src/lib/util/list.h
r5103 r5110 12 12 #endif 13 13 14 14 template<class T> class tIterator; 15 15 16 16 //! a list element of the tList, … … 23 23 24 24 /** 25 * an iterator class26 27 this enables the user to iterate through a list very easely28 */29 template<class T> class tIterator30 {31 public:32 tIterator(listElement<T>* startElement);33 ~tIterator();34 35 T* nextElement();36 T* seekElement(T* element);37 38 private:39 listElement<T>* currentEl; //!< pointer to the current list element in the iterator40 listElement<T>* tmpEl; //!< temp listElemnt pointer41 listElement<T>* startElement; //!< pointer to the start of the list42 };43 44 45 /**46 * iterator constructor47 * @param startElement: the first list element from the tList48 49 normaly you will use it like this:50 51 tIterator<char>* nameIterator = nameList->getIterator();52 char name* = nameIterator->nextElement();53 while( name != NULL)54 {55 PRINTF(3)("found name: %s in list\n", name);56 name = nameIterator->nextElement();57 }58 delete nameIterator;59 */60 template<class T>61 inline tIterator<T>::tIterator (listElement<T>* startElement)62 {63 this->currentEl = startElement;64 this->tmpEl = NULL;65 this->startElement = startElement;66 }67 68 69 /**70 * the destructor71 */72 template<class T>73 inline tIterator<T>::~tIterator ()74 {75 this->currentEl = NULL;76 }77 78 79 /**80 * use it to iterate through the list81 * @returns next list element82 */83 template<class T>84 inline T* tIterator<T>::nextElement ()85 {86 if( this->currentEl == NULL)87 return NULL;88 89 this->tmpEl = this->currentEl;90 this->currentEl = this->currentEl->next;91 return this->tmpEl->curr;92 }93 94 /**95 * gets the element after the selected one, sets the iterator to this point in the list96 * @param element the element to seek97 * @returns next list element98 99 Attention: if you seek an element, the iterator pointer will point to the NEXT listelement after the argument!100 */101 template<class T>102 inline T* tIterator<T>::seekElement (T* element)103 {104 for(this->tmpEl = this->startElement; this->tmpEl != NULL; this->tmpEl = this->tmpEl->next)105 {106 if( unlikely(this->tmpEl->curr == element))107 {108 if( this->tmpEl->next != NULL)109 {110 this->currentEl = this->tmpEl->next->next;111 return this->tmpEl->next->curr;112 }113 return NULL;114 }115 }116 return NULL;117 }118 119 120 121 /**122 25 * the list template class 123 26 … … 126 29 template<class T> class tList 127 30 { 31 friend class tIterator<T>; 32 128 33 public: 129 34 tList (); … … 374 279 inline tIterator<T>* tList<T>::getIterator() const 375 280 { 376 tIterator<T>* iterator = new tIterator<T>(this->first); 377 return iterator; 281 return new tIterator<T>(this); 378 282 } 379 283 … … 414 318 } 415 319 320 321 322 323 /** 324 * an iterator class 325 326 this enables the user to iterate through a list very easely 327 */ 328 template<class T> class tIterator 329 { 330 public: 331 tIterator(const tList<T>* list); 332 ~tIterator(); 333 334 T* firstElement(); 335 T* nextElement(); 336 T* seekElement(T* element); 337 338 private: 339 listElement<T>* currentEl; //!< pointer to the current list element in the iterator 340 listElement<T>* tmpEl; //!< temp listElemnt pointer 341 const tList<T>* list; //!< The List, that we want to iterate through 342 }; 343 344 345 /** 346 * iterator constructor 347 * @param startElement: the first list element from the tList 348 349 normaly you will use it like this: 350 351 tIterator<char>* nameIterator = nameList->getIterator(); 352 char name* = nameIterator->nextElement(); 353 while( name != NULL) 354 { 355 PRINTF(3)("found name: %s in list\n", name); 356 name = nameIterator->nextElement(); 357 } 358 delete nameIterator; 359 */ 360 template<class T> 361 inline tIterator<T>::tIterator (const tList<T>* list) 362 { 363 this->currentEl = list->first; 364 this->tmpEl = NULL; 365 this->list = list; 366 } 367 368 369 /** 370 * the destructor 371 */ 372 template<class T> 373 inline tIterator<T>::~tIterator () 374 { 375 this->currentEl = NULL; 376 } 377 378 template<class T> 379 inline T* tIterator<T>::firstElement () 380 { 381 this->currentEl = this->list->first; 382 if (this->currentEl == NULL) 383 return NULL; 384 else 385 return this->currentEl->curr; 386 } 387 388 389 /** 390 * use it to iterate through the list 391 * @returns next list element 392 */ 393 template<class T> 394 inline T* tIterator<T>::nextElement () 395 { 396 if( this->currentEl == NULL || this->currentEl->next == NULL) 397 { 398 this->currentEl = NULL; 399 return NULL; 400 } 401 402 this->currentEl = this->currentEl->next; 403 return this->currentEl->curr; 404 } 405 406 /** 407 * gets the element after the selected one, sets the iterator to this point in the list 408 * @param element the element to seek 409 * @returns next list element 410 411 Attention: if you seek an element, the iterator pointer will point to the NEXT listelement after the argument! 412 */ 413 template<class T> 414 inline T* tIterator<T>::seekElement (T* element) 415 { 416 for(this->tmpEl = this->list->first; this->tmpEl != NULL; this->tmpEl = this->tmpEl->next) 417 { 418 if( unlikely(this->tmpEl->curr == element)) 419 { 420 if( this->tmpEl->next != NULL) 421 { 422 this->currentEl = this->tmpEl; 423 return this->tmpEl->next->curr; 424 } 425 return NULL; 426 } 427 } 428 return NULL; 429 } 430 416 431 #endif /* _LIST_H */
Note: See TracChangeset
for help on using the changeset viewer.