diff options
Diffstat (limited to 'src/array.h')
| -rw-r--r-- | src/array.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/array.h b/src/array.h index ca4ec21..6279382 100644 --- a/src/array.h +++ b/src/array.h | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | 10 | ||
| 11 | #include <memory> | 11 | #include <memory> |
| 12 | #include "bu/exceptionbase.h" | 12 | #include "bu/exceptionbase.h" |
| 13 | #include "bu/archivebase.h" | ||
| 13 | 14 | ||
| 14 | namespace Bu | 15 | namespace Bu |
| 15 | { | 16 | { |
| @@ -442,6 +443,38 @@ namespace Bu | |||
| 442 | 443 | ||
| 443 | return f; | 444 | return f; |
| 444 | } | 445 | } |
| 446 | |||
| 447 | template<typename value, int inc, typename valuealloc> | ||
| 448 | ArchiveBase &operator<<( ArchiveBase &ar, | ||
| 449 | const Array<value, inc, valuealloc> &h ) | ||
| 450 | { | ||
| 451 | ar << h.getSize(); | ||
| 452 | for( typename Array<value, inc, valuealloc>::const_iterator i = | ||
| 453 | h.begin(); i != h.end(); i++ ) | ||
| 454 | { | ||
| 455 | ar << (*i); | ||
| 456 | } | ||
| 457 | |||
| 458 | return ar; | ||
| 459 | } | ||
| 460 | |||
| 461 | template<typename value, int inc, typename valuealloc> | ||
| 462 | ArchiveBase &operator>>(ArchiveBase &ar, Array<value, inc, valuealloc> &h ) | ||
| 463 | { | ||
| 464 | h.clear(); | ||
| 465 | long nSize; | ||
| 466 | ar >> nSize; | ||
| 467 | |||
| 468 | h.setCapacity( nSize ); | ||
| 469 | for( long j = 0; j < nSize; j++ ) | ||
| 470 | { | ||
| 471 | value v; | ||
| 472 | ar >> v; | ||
| 473 | h.append( v ); | ||
| 474 | } | ||
| 475 | return ar; | ||
| 476 | } | ||
| 477 | |||
| 445 | } | 478 | } |
| 446 | 479 | ||
| 447 | #endif | 480 | #endif |
