diff options
author | Mike Buland <eichlan@xagasoft.com> | 2009-04-02 15:00:14 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2009-04-02 15:00:14 +0000 |
commit | aaeaa599a14642e916bbd8a32a208ee96a26eaac (patch) | |
tree | dd96f81051b43e398059c9463cfd1997e08d217a | |
parent | e9e5da32b2e154698482b7ec6b7ab2098cd849c8 (diff) | |
download | libbu++-aaeaa599a14642e916bbd8a32a208ee96a26eaac.tar.gz libbu++-aaeaa599a14642e916bbd8a32a208ee96a26eaac.tar.bz2 libbu++-aaeaa599a14642e916bbd8a32a208ee96a26eaac.tar.xz libbu++-aaeaa599a14642e916bbd8a32a208ee96a26eaac.zip |
Array iterators' validity testing was actually reversed. That was a serious
problem. Also, arrays now have a formatter.
Diffstat (limited to '')
-rw-r--r-- | src/array.h | 36 | ||||
-rw-r--r-- | src/unit/array.unit | 2 |
2 files changed, 34 insertions, 4 deletions
diff --git a/src/array.h b/src/array.h index e717fd5..ca4ec21 100644 --- a/src/array.h +++ b/src/array.h | |||
@@ -245,14 +245,19 @@ namespace Bu | |||
245 | return src[iPos]; | 245 | return src[iPos]; |
246 | } | 246 | } |
247 | 247 | ||
248 | long getIndex() const | ||
249 | { | ||
250 | return iPos; | ||
251 | } | ||
252 | |||
248 | operator bool() const | 253 | operator bool() const |
249 | { | 254 | { |
250 | return iPos < 0; | 255 | return iPos >= 0; |
251 | } | 256 | } |
252 | 257 | ||
253 | bool isValid() const | 258 | bool isValid() const |
254 | { | 259 | { |
255 | return iPos < 0; | 260 | return iPos >= 0; |
256 | } | 261 | } |
257 | } iterator; | 262 | } iterator; |
258 | 263 | ||
@@ -337,15 +342,20 @@ namespace Bu | |||
337 | "Cannot dereference finished iterator."); | 342 | "Cannot dereference finished iterator."); |
338 | return src[iPos]; | 343 | return src[iPos]; |
339 | } | 344 | } |
345 | |||
346 | long getIndex() const | ||
347 | { | ||
348 | return iPos; | ||
349 | } | ||
340 | 350 | ||
341 | operator bool() const | 351 | operator bool() const |
342 | { | 352 | { |
343 | return iPos < 0; | 353 | return iPos >= 0; |
344 | } | 354 | } |
345 | 355 | ||
346 | bool isValid() const | 356 | bool isValid() const |
347 | { | 357 | { |
348 | return iPos < 0; | 358 | return iPos >= 0; |
349 | } | 359 | } |
350 | } const_iterator; | 360 | } const_iterator; |
351 | 361 | ||
@@ -414,6 +424,24 @@ namespace Bu | |||
414 | long iSize; | 424 | long iSize; |
415 | long iCapacity; | 425 | long iCapacity; |
416 | }; | 426 | }; |
427 | |||
428 | class Formatter; | ||
429 | Formatter &operator<<( Formatter &rOut, char *sStr ); | ||
430 | Formatter &operator<<( Formatter &rOut, signed char c ); | ||
431 | template<typename value> | ||
432 | Formatter &operator<<( Formatter &f, const Bu::Array<value> &a ) | ||
433 | { | ||
434 | f << '['; | ||
435 | for( typename Bu::Array<value>::const_iterator i = a.begin(); i; i++ ) | ||
436 | { | ||
437 | if( i != a.begin() ) | ||
438 | f << ", "; | ||
439 | f << *i; | ||
440 | } | ||
441 | f << ']'; | ||
442 | |||
443 | return f; | ||
444 | } | ||
417 | } | 445 | } |
418 | 446 | ||
419 | #endif | 447 | #endif |
diff --git a/src/unit/array.unit b/src/unit/array.unit index d5fc573..3a777d3 100644 --- a/src/unit/array.unit +++ b/src/unit/array.unit | |||
@@ -32,11 +32,13 @@ | |||
32 | int j = 0; | 32 | int j = 0; |
33 | for( Bu::Array<int>::iterator i = ai.begin(); i != ai.end(); i++ ) | 33 | for( Bu::Array<int>::iterator i = ai.begin(); i != ai.end(); i++ ) |
34 | unitTest( (*i) == j++ ); | 34 | unitTest( (*i) == j++ ); |
35 | unitTest( j == 10 ); | ||
35 | 36 | ||
36 | const Bu::Array<int> &ci = ai; | 37 | const Bu::Array<int> &ci = ai; |
37 | j = 0; | 38 | j = 0; |
38 | for( Bu::Array<int>::const_iterator i = ci.begin(); i != ci.end(); i++ ) | 39 | for( Bu::Array<int>::const_iterator i = ci.begin(); i != ci.end(); i++ ) |
39 | unitTest( (*i) == j++ ); | 40 | unitTest( (*i) == j++ ); |
41 | unitTest( j == 10 ); | ||
40 | } | 42 | } |
41 | 43 | ||
42 | {%iterate2} | 44 | {%iterate2} |