aboutsummaryrefslogtreecommitdiff
path: root/src/list.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/list.h')
-rw-r--r--src/list.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/list.h b/src/list.h
index 9d1f904..314459e 100644
--- a/src/list.h
+++ b/src/list.h
@@ -115,6 +115,10 @@ namespace Bu
115 } 115 }
116 } 116 }
117 117
118 /**
119 * Prepend a value to the list.
120 *@param v (const value_type &) The value to prepend.
121 */
118 void prepend( const value &v ) 122 void prepend( const value &v )
119 { 123 {
120 Link *pNew = la.allocate( 1 ); 124 Link *pNew = la.allocate( 1 );
@@ -136,6 +140,9 @@ namespace Bu
136 } 140 }
137 } 141 }
138 142
143 /**
144 * An iterator to iterate through your list.
145 */
139 typedef struct iterator 146 typedef struct iterator
140 { 147 {
141 friend class List<value, valuealloc, linkalloc>; 148 friend class List<value, valuealloc, linkalloc>;
@@ -152,36 +159,67 @@ namespace Bu
152 } 159 }
153 160
154 public: 161 public:
162 /**
163 * Equals comparison operator.
164 *@param oth (const iterator &) The iterator to compare to.
165 *@returns (bool) Are they equal?
166 */
155 bool operator==( const iterator &oth ) const 167 bool operator==( const iterator &oth ) const
156 { 168 {
157 return ( pLink == oth.pLink ); 169 return ( pLink == oth.pLink );
158 } 170 }
159 171
172 /**
173 * Equals comparison operator.
174 *@param pOth (const Link *) The link to compare to.
175 *@returns (bool) Are they equal?
176 */
160 bool operator==( const Link *pOth ) const 177 bool operator==( const Link *pOth ) const
161 { 178 {
162 return ( pLink == pOth ); 179 return ( pLink == pOth );
163 } 180 }
164 181
182 /**
183 * Not equals comparison operator.
184 *@param oth (const iterator &) The iterator to compare to.
185 *@returns (bool) Are they not equal?
186 */
165 bool operator!=( const iterator &oth ) const 187 bool operator!=( const iterator &oth ) const
166 { 188 {
167 return ( pLink != oth.pLink ); 189 return ( pLink != oth.pLink );
168 } 190 }
169 191
192 /**
193 * Not equals comparison operator.
194 *@param pOth (const Link *) The link to compare to.
195 *@returns (bool) Are they not equal?
196 */
170 bool operator!=( const Link *pOth ) const 197 bool operator!=( const Link *pOth ) const
171 { 198 {
172 return ( pLink != pOth ); 199 return ( pLink != pOth );
173 } 200 }
174 201
202 /**
203 * Dereference operator.
204 *@returns (value_type &) The value.
205 */
175 value &operator*() 206 value &operator*()
176 { 207 {
177 return *(pLink->pValue); 208 return *(pLink->pValue);
178 } 209 }
179 210
211 /**
212 * Pointer access operator.
213 *@returns (value_type *) A pointer to the value.
214 */
180 value *operator->() 215 value *operator->()
181 { 216 {
182 return pLink->pValue; 217 return pLink->pValue;
183 } 218 }
184 219
220 /**
221 * Increment operator.
222 */
185 iterator &operator++() 223 iterator &operator++()
186 { 224 {
187 if( pLink != NULL ) 225 if( pLink != NULL )
@@ -189,6 +227,9 @@ namespace Bu
189 return *this; 227 return *this;
190 } 228 }
191 229
230 /**
231 * Decrement operator.
232 */
192 iterator &operator--() 233 iterator &operator--()
193 { 234 {
194 if( pLink != NULL ) 235 if( pLink != NULL )
@@ -196,6 +237,9 @@ namespace Bu
196 return *this; 237 return *this;
197 } 238 }
198 239
240 /**
241 * Increment operator.
242 */
199 iterator &operator++( int ) 243 iterator &operator++( int )
200 { 244 {
201 if( pLink != NULL ) 245 if( pLink != NULL )
@@ -203,6 +247,9 @@ namespace Bu
203 return *this; 247 return *this;
204 } 248 }
205 249
250 /**
251 * Decrement operator.
252 */
206 iterator &operator--( int ) 253 iterator &operator--( int )
207 { 254 {
208 if( pLink != NULL ) 255 if( pLink != NULL )
@@ -210,6 +257,11 @@ namespace Bu
210 return *this; 257 return *this;
211 } 258 }
212 259
260 /**
261 * Assignment operator.
262 *@param oth (const iterator &) The other iterator to set this
263 * one to.
264 */
213 iterator &operator=( const iterator &oth ) 265 iterator &operator=( const iterator &oth )
214 { 266 {
215 pLink = oth.pLink; 267 pLink = oth.pLink;
@@ -217,6 +269,9 @@ namespace Bu
217 } 269 }
218 }; 270 };
219 271
272 /**
273 *@see iterator
274 */
220 typedef struct const_iterator 275 typedef struct const_iterator
221 { 276 {
222 friend class List<value, valuealloc, linkalloc>; 277 friend class List<value, valuealloc, linkalloc>;
@@ -309,21 +364,38 @@ namespace Bu
309 } 364 }
310 }; 365 };
311 366
367 /**
368 * Get an iterator pointing to the first item in the list.
369 *@returns (iterator)
370 */
312 iterator begin() 371 iterator begin()
313 { 372 {
314 return iterator( pFirst ); 373 return iterator( pFirst );
315 } 374 }
316 375
376 /**
377 * Get a const iterator pointing to the first item in the list.
378 *@returns (const const_iterator)
379 */
317 const const_iterator begin() const 380 const const_iterator begin() const
318 { 381 {
319 return const_iterator( pFirst ); 382 return const_iterator( pFirst );
320 } 383 }
321 384
385 /**
386 * Get an iterator pointing to a place just past the last item in
387 * the list.
388 *@returns (const Link *)
389 */
322 const Link *end() const 390 const Link *end() const
323 { 391 {
324 return NULL; 392 return NULL;
325 } 393 }
326 394
395 /**
396 * Erase an item from the list.
397 *@param i (iterator) The item to erase.
398 */
327 void erase( iterator &i ) 399 void erase( iterator &i )
328 { 400 {
329 Link *pCur = i.pLink; 401 Link *pCur = i.pLink;
@@ -355,26 +427,46 @@ namespace Bu
355 } 427 }
356 } 428 }
357 429
430 /**
431 * Get the current size of the list.
432 *@returns (int) The current size of the list.
433 */
358 int getSize() const 434 int getSize() const
359 { 435 {
360 return nSize; 436 return nSize;
361 } 437 }
362 438
439 /**
440 * Get the first item in the list.
441 *@returns (value_type &) The first item in the list.
442 */
363 value &first() 443 value &first()
364 { 444 {
365 return *pFirst->pValue; 445 return *pFirst->pValue;
366 } 446 }
367 447
448 /**
449 * Get the first item in the list.
450 *@returns (const value_type &) The first item in the list.
451 */
368 const value &first() const 452 const value &first() const
369 { 453 {
370 return *pFirst->pValue; 454 return *pFirst->pValue;
371 } 455 }
372 456
457 /**
458 * Get the last item in the list.
459 *@returns (value_type &) The last item in the list.
460 */
373 value &last() 461 value &last()
374 { 462 {
375 return *pLast->pValue; 463 return *pLast->pValue;
376 } 464 }
377 465
466 /**
467 * Get the last item in the list.
468 *@returns (const value_type &) The last item in the list.
469 */
378 const value &last() const 470 const value &last() const
379 { 471 {
380 return *pLast->pValue; 472 return *pLast->pValue;