diff options
Diffstat (limited to '')
| -rw-r--r-- | src/archive.h | 45 |
1 files changed, 38 insertions, 7 deletions
diff --git a/src/archive.h b/src/archive.h index 1d57724..519b2a7 100644 --- a/src/archive.h +++ b/src/archive.h | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | #include <list> | 13 | #include <list> |
| 14 | #include "bu/hash.h" | 14 | #include "bu/hash.h" |
| 15 | #include "bu/list.h" | 15 | #include "bu/list.h" |
| 16 | #include "bu/set.h" | 16 | //#include "bu/set.h" |
| 17 | #include "bu/util.h" | 17 | #include "bu/util.h" |
| 18 | 18 | ||
| 19 | namespace Bu | 19 | namespace Bu |
| @@ -298,11 +298,12 @@ namespace Bu | |||
| 298 | return ar; | 298 | return ar; |
| 299 | } | 299 | } |
| 300 | 300 | ||
| 301 | template<typename value> | 301 | template<typename value, int inc, typename valuealloc> class Array; |
| 302 | Archive &operator<<( Archive &ar, Set<value> &h ) | 302 | template<typename value, int inc, typename valuealloc> |
| 303 | Archive &operator<<( Archive &ar, Array<value, inc, valuealloc> &h ) | ||
| 303 | { | 304 | { |
| 304 | ar << h.getSize(); | 305 | ar << h.getSize(); |
| 305 | for( typename Set<value>::iterator i = h.begin(); i != h.end(); i++ ) | 306 | for( typename Array<value, inc, valuealloc>::iterator i = h.begin(); i != h.end(); i++ ) |
| 306 | { | 307 | { |
| 307 | ar << (*i); | 308 | ar << (*i); |
| 308 | } | 309 | } |
| @@ -310,17 +311,47 @@ namespace Bu | |||
| 310 | return ar; | 311 | return ar; |
| 311 | } | 312 | } |
| 312 | 313 | ||
| 313 | template<typename value> | 314 | template<typename value, int inc, typename valuealloc> |
| 314 | Archive &operator>>( Archive &ar, Set<value> &h ) | 315 | Archive &operator>>(Archive &ar, Array<value, inc, valuealloc> &h ) |
| 315 | { | 316 | { |
| 316 | h.clear(); | 317 | h.clear(); |
| 317 | long nSize; | 318 | long nSize; |
| 318 | ar >> nSize; | 319 | ar >> nSize; |
| 319 | 320 | ||
| 321 | h.setCapacity( nSize ); | ||
| 320 | for( long j = 0; j < nSize; j++ ) | 322 | for( long j = 0; j < nSize; j++ ) |
| 321 | { | 323 | { |
| 322 | value v; | 324 | value v; |
| 323 | ar >> v; | 325 | ar >> v; |
| 326 | h.append( v ); | ||
| 327 | } | ||
| 328 | return ar; | ||
| 329 | } | ||
| 330 | |||
| 331 | template<typename key, typename b, typename c, typename d> class Set; | ||
| 332 | template<typename key, typename b, typename c, typename d> | ||
| 333 | Archive &operator<<( Archive &ar, Set<key, b, c, d> &h ) | ||
| 334 | { | ||
| 335 | ar << h.getSize(); | ||
| 336 | for( typename Set<key, b, c, d>::iterator i = h.begin(); i != h.end(); i++ ) | ||
| 337 | { | ||
| 338 | ar << (*i); | ||
| 339 | } | ||
| 340 | |||
| 341 | return ar; | ||
| 342 | } | ||
| 343 | |||
| 344 | template<typename key, typename b, typename c, typename d> | ||
| 345 | Archive &operator>>( Archive &ar, Set<key, b, c, d> &h ) | ||
| 346 | { | ||
| 347 | h.clear(); | ||
| 348 | long nSize; | ||
| 349 | ar >> nSize; | ||
| 350 | |||
| 351 | for( long j = 0; j < nSize; j++ ) | ||
| 352 | { | ||
| 353 | key v; | ||
| 354 | ar >> v; | ||
| 324 | h.insert( v ); | 355 | h.insert( v ); |
| 325 | } | 356 | } |
| 326 | 357 | ||
