Changeset 5111 in orxonox.OLD for trunk/src/lib/util
- Timestamp:
- Aug 23, 2005, 11:13:56 PM (19 years ago)
- Location:
- trunk/src/lib/util
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/util/ini_parser.cc
r5110 r5111 58 58 { 59 59 tIterator<IniSection>* sectionIt = this->sections->getIterator(); 60 IniSection* sectionEnum = sectionIt-> firstElement();60 IniSection* sectionEnum = sectionIt->nextElement(); 61 61 while (sectionEnum) 62 62 { 63 63 tIterator<IniEntry>* entryIt = sectionEnum->entries->getIterator(); 64 IniEntry* entryEnum = entryIt-> firstElement();64 IniEntry* entryEnum = entryIt->nextElement(); 65 65 while (entryEnum) 66 66 { … … 192 192 { 193 193 tIterator<IniSection>* sectionIt = this->sections->getIterator(); 194 IniSection* sectionEnum = sectionIt-> firstElement();194 IniSection* sectionEnum = sectionIt->nextElement(); 195 195 while (sectionEnum) 196 196 { … … 198 198 199 199 tIterator<IniEntry>* entryIt = sectionEnum->entries->getIterator(); 200 IniEntry* entryEnum = entryIt-> firstElement();200 IniEntry* entryEnum = entryIt->nextElement(); 201 201 while (entryEnum) 202 202 { … … 246 246 { 247 247 tIterator<IniSection>* sectionIt = this->sections->getIterator(); 248 IniSection* sectionEnum = sectionIt-> firstElement();248 IniSection* sectionEnum = sectionIt->nextElement(); 249 249 while (sectionEnum) 250 250 { … … 347 347 { 348 348 tIterator<IniSection>* sectionIt = this->sections->getIterator(); 349 IniSection* sectionEnum = sectionIt-> firstElement();349 IniSection* sectionEnum = sectionIt->nextElement(); 350 350 while (sectionEnum) 351 351 { … … 395 395 { 396 396 tIterator<IniSection>* sectionIt = this->sections->getIterator(); 397 IniSection* sectionEnum = sectionIt-> firstElement();397 IniSection* sectionEnum = sectionIt->nextElement(); 398 398 while (sectionEnum) 399 399 { … … 401 401 { 402 402 tIterator<IniEntry>* entryIt = sectionEnum->entries->getIterator(); 403 IniEntry* entryEnum = entryIt-> firstElement();403 IniEntry* entryEnum = entryIt->nextElement(); 404 404 while (entryEnum) 405 405 { … … 452 452 { 453 453 tIterator<IniSection>* sectionIt = this->sections->getIterator(); 454 IniSection* sectionEnum = sectionIt-> firstElement();454 IniSection* sectionEnum = sectionIt->nextElement(); 455 455 while (sectionEnum) 456 456 { … … 458 458 459 459 tIterator<IniEntry>* entryIt = sectionEnum->entries->getIterator(); 460 IniEntry* entryEnum = entryIt-> firstElement();460 IniEntry* entryEnum = entryIt->nextElement(); 461 461 while (entryEnum) 462 462 { -
trunk/src/lib/util/list.h
r5110 r5111 12 12 #endif 13 13 14 template<class T> class tIterator; 14 15 15 16 16 //! a list element of the tList, … … 23 23 24 24 /** 25 * an iterator class 26 27 this enables the user to iterate through a list very easely 28 */ 29 template<class T> class tIterator 30 { 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 iterator 40 listElement<T>* tmpEl; //!< temp listElemnt pointer 41 listElement<T>* startElement; //!< pointer to the start of the list 42 }; 43 44 45 /** 46 * iterator constructor 47 * @param startElement: the first list element from the tList 48 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 destructor 71 */ 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 list 81 * @returns next list element 82 */ 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 list 96 * @param element the element to seek 97 * @returns next list element 98 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 /** 25 122 * the list template class 26 123 … … 29 126 template<class T> class tList 30 127 { 31 friend class tIterator<T>;32 33 128 public: 34 129 tList (); … … 40 135 void removeLast(); 41 136 void flush(); 42 T* firstElement() const;43 T* lastElement() const;44 bool isEmpty() const;45 unsigned int getSize() const;137 T* firstElement(); 138 T* lastElement(); 139 bool isEmpty(); 140 unsigned int getSize(); 46 141 bool inList(T* entity); 47 tIterator<T>* getIterator() const;142 tIterator<T>* getIterator(); 48 143 T* nextElement(T* toEntity); 49 144 T* toArray(); … … 208 303 */ 209 304 template<class T> 210 inline T* tList<T>::firstElement() const305 inline T* tList<T>::firstElement() 211 306 { 212 307 return this->first->curr; … … 219 314 */ 220 315 template<class T> 221 inline T* tList<T>::lastElement() const316 inline T* tList<T>::lastElement() 222 317 { 223 318 return this->last->curr; … … 230 325 */ 231 326 template<class T> 232 inline bool tList<T>::isEmpty() const327 inline bool tList<T>::isEmpty() 233 328 { 234 329 return (this->size==0)?true:false; … … 264 359 */ 265 360 template<class T> 266 inline unsigned int tList<T>::getSize() const361 inline unsigned int tList<T>::getSize() 267 362 { 268 363 return this->size; … … 277 372 */ 278 373 template<class T> 279 inline tIterator<T>* tList<T>::getIterator() const 280 { 281 return new tIterator<T>(this); 374 inline tIterator<T>* tList<T>::getIterator() 375 { 376 tIterator<T>* iterator = new tIterator<T>(this->first); 377 return iterator; 282 378 } 283 379 … … 318 414 } 319 415 320 321 322 323 /**324 * an iterator class325 326 this enables the user to iterate through a list very easely327 */328 template<class T> class tIterator329 {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 iterator340 listElement<T>* tmpEl; //!< temp listElemnt pointer341 const tList<T>* list; //!< The List, that we want to iterate through342 };343 344 345 /**346 * iterator constructor347 * @param startElement: the first list element from the tList348 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 destructor371 */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 else385 return this->currentEl->curr;386 }387 388 389 /**390 * use it to iterate through the list391 * @returns next list element392 */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 list408 * @param element the element to seek409 * @returns next list element410 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 431 416 #endif /* _LIST_H */
Note: See TracChangeset
for help on using the changeset viewer.