Changeset 5115 in orxonox.OLD for trunk/src/lib/util
- Timestamp:
- Aug 24, 2005, 1:30:13 AM (19 years ago)
- Location:
- trunk/src/lib/util
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/util/ini_parser.cc
r5111 r5115 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
r5113 r5115 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 T* iteratorElement(const tIterator<T>* iterator); 338 339 private: 340 listElement<T>* currentEl; //!< pointer to the current list element in the iterator 341 listElement<T>* tmpEl; //!< temp listElemnt pointer 342 const tList<T>* list; //!< The List, that we want to iterate through 343 }; 344 345 346 /** 347 * iterator constructor 348 * @param startElement: the first list element from the tList 349 * 350 * normaly you will use it like this: 351 ********************************************************** 352 * tIterator<char>* nameIterator = nameList->getIterator(); 353 * char name* = nameIterator->firstElement(); 354 * while( name != NULL) 355 * { 356 * PRINTF(3)("found name: %s in list\n", name); 357 * name = nameIterator->nextElement(); 358 * } 359 * delete nameIterator; 360 * ******************************************************** 361 */ 362 template<class T> 363 inline tIterator<T>::tIterator (const tList<T>* list) 364 { 365 this->currentEl = list->first; 366 this->tmpEl = NULL; 367 this->list = list; 368 } 369 370 371 /** 372 * the destructor 373 */ 374 template<class T> 375 inline tIterator<T>::~tIterator () 376 { 377 this->currentEl = NULL; 378 } 379 380 template<class T> 381 inline T* tIterator<T>::firstElement () 382 { 383 this->currentEl = this->list->first; 384 if (this->currentEl == NULL) 385 return NULL; 386 else 387 return this->currentEl->curr; 388 } 389 390 391 /** 392 * use it to iterate through the list 393 * @returns next list element 394 */ 395 template<class T> 396 inline T* tIterator<T>::nextElement () 397 { 398 if( this->currentEl == NULL) 399 return NULL; 400 401 this->currentEl = this->currentEl->next; 402 if (this->currentEl != NULL) 403 return this->currentEl->curr; 404 else 405 return NULL; 406 } 407 408 /** 409 * gets the element after the selected one, sets the iterator to this point in the list 410 * @param element the element to seek 411 * @returns current list element 412 */ 413 template<class T> 414 inline T* tIterator<T>::seekElement (T* element) 415 { 416 if (element == NULL) 417 { 418 this->currentEl = NULL; 419 return NULL; 420 } 421 this->tmpEl = this->list->first; 422 while( this->tmpEl != NULL) 423 { 424 if( unlikely(this->tmpEl->curr == element)) 425 { 426 this->currentEl = this->tmpEl; 427 return this->currentEl->curr; 428 } 429 this->tmpEl = this->tmpEl->next; 430 } 431 this->currentEl = NULL; 432 return NULL; 433 } 434 435 /** 436 * grabs the iterator entity from another iterator 437 * @param iterator the iterator to grab the local currentEl from 438 * @returns the grabbed element (current). 439 */ 440 template<class T> 441 T* tIterator<T>::iteratorElement(const tIterator<T>* iterator) 442 { 443 if (iterator != NULL) 444 { 445 this->currentEl = iterator->currentEl; 446 if (this->currentEl != NULL) 447 return this->currentEl->curr; 448 else 449 return NULL; 450 } 451 else 452 { 453 this->currentEl = NULL; 454 return NULL; 455 } 456 } 457 458 416 459 #endif /* _LIST_H */
Note: See TracChangeset
for help on using the changeset viewer.