Changeset 5110 in orxonox.OLD for trunk/src/lib/util
- Timestamp:
- Aug 23, 2005, 11:07:40 PM (19 years ago)
- Location:
- trunk/src/lib/util
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
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.