diff options
author | Mike Buland <eichlan@xagasoft.com> | 2007-04-10 17:37:46 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2007-04-10 17:37:46 +0000 |
commit | e7ab7cb1604c04763bbdcece5885e6ce5aa100b4 (patch) | |
tree | db5bee7da9373f64508e243f24031bc35b1acee7 /src/archive.h | |
parent | 903e7a1e3d4fe99e9de7f4adc1e401ba871caec9 (diff) | |
download | libbu++-e7ab7cb1604c04763bbdcece5885e6ce5aa100b4.tar.gz libbu++-e7ab7cb1604c04763bbdcece5885e6ce5aa100b4.tar.bz2 libbu++-e7ab7cb1604c04763bbdcece5885e6ce5aa100b4.tar.xz libbu++-e7ab7cb1604c04763bbdcece5885e6ce5aa100b4.zip |
Fixed a warning in the SFile test, and added std::list support to the archive.
I guess I should write a test for it too...
I'm also thinking of removing the S from the front of the stream children.
Diffstat (limited to 'src/archive.h')
-rw-r--r-- | src/archive.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/archive.h b/src/archive.h index a8ce53e..9ac3303 100644 --- a/src/archive.h +++ b/src/archive.h | |||
@@ -5,6 +5,7 @@ | |||
5 | #include <string> | 5 | #include <string> |
6 | #include "archival.h" | 6 | #include "archival.h" |
7 | #include "stream.h" | 7 | #include "stream.h" |
8 | #include <list> | ||
8 | 9 | ||
9 | namespace Bu | 10 | namespace Bu |
10 | { | 11 | { |
@@ -92,6 +93,34 @@ namespace Bu | |||
92 | return ar << dat; | 93 | return ar << dat; |
93 | } | 94 | } |
94 | } | 95 | } |
96 | |||
97 | template<typename T> Archive &operator<<( Archive &ar, std::list<T> &l ) | ||
98 | { | ||
99 | typename std::list<T>::size_type num = l.size(); | ||
100 | ar << num; | ||
101 | for( typename std::list<T>::const_iterator i = l.begin(); i != l.end(); | ||
102 | i++ ) | ||
103 | { | ||
104 | ar << *i; | ||
105 | } | ||
106 | |||
107 | return ar; | ||
108 | } | ||
109 | |||
110 | template<typename T> Archive &operator>>( Archive &ar, std::list<T> &l ) | ||
111 | { | ||
112 | typename std::list<T>::size_type num; | ||
113 | ar >> num; | ||
114 | |||
115 | l.resize( num ); | ||
116 | for( typename std::list<T>::const_iterator i = l.begin(); | ||
117 | i != l.end(); i++ ) | ||
118 | { | ||
119 | ar >> *i; | ||
120 | } | ||
121 | |||
122 | return ar; | ||
123 | } | ||
95 | } | 124 | } |
96 | 125 | ||
97 | #endif | 126 | #endif |