diff options
Diffstat (limited to '')
-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 |