diff options
Diffstat (limited to '')
| -rw-r--r-- | src/set.h | 30 |
1 files changed, 30 insertions, 0 deletions
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <utility> | 16 | #include <utility> |
| 17 | #include "bu/exceptionbase.h" | 17 | #include "bu/exceptionbase.h" |
| 18 | #include "bu/list.h" | 18 | #include "bu/list.h" |
| 19 | #include "bu/archive.h" | ||
| 19 | 20 | ||
| 20 | #define bitsToBytes( n ) (n/32+(n%32>0 ? 1 : 0)) | 21 | #define bitsToBytes( n ) (n/32+(n%32>0 ? 1 : 0)) |
| 21 | 22 | ||
| @@ -763,6 +764,35 @@ namespace Bu | |||
| 763 | challoc ca; | 764 | challoc ca; |
| 764 | sizecalc szCalc; | 765 | sizecalc szCalc; |
| 765 | }; | 766 | }; |
| 767 | |||
| 768 | template<typename key, typename b, typename c, typename d> | ||
| 769 | Archive &operator<<( Archive &ar, const Set<key, b, c, d> &h ) | ||
| 770 | { | ||
| 771 | ar << h.getSize(); | ||
| 772 | for( typename Set<key, b, c, d>::const_iterator i = h.begin(); i != h.end(); i++ ) | ||
| 773 | { | ||
| 774 | ar << (*i); | ||
| 775 | } | ||
| 776 | |||
| 777 | return ar; | ||
| 778 | } | ||
| 779 | |||
| 780 | template<typename key, typename b, typename c, typename d> | ||
| 781 | Archive &operator>>( Archive &ar, Set<key, b, c, d> &h ) | ||
| 782 | { | ||
| 783 | h.clear(); | ||
| 784 | long nSize; | ||
| 785 | ar >> nSize; | ||
| 786 | |||
| 787 | for( long j = 0; j < nSize; j++ ) | ||
| 788 | { | ||
| 789 | key v; | ||
| 790 | ar >> v; | ||
| 791 | h.insert( v ); | ||
| 792 | } | ||
| 793 | |||
| 794 | return ar; | ||
| 795 | } | ||
| 766 | } | 796 | } |
| 767 | 797 | ||
| 768 | #endif | 798 | #endif |
