33#ifndef __H__UG__SERIALIZATION__
34#define __H__UG__SERIALIZATION__
155template <
class TStream,
class T>
158 buf.write((
char*)&val,
sizeof(T));
161template <
class TStream,
class T>
164 buf.read((
char*)&valOut,
sizeof(T));
168template<
typename T,
class TIStream>
178template <
class TStream,
class T>
185template <
class T1,
class T2,
class TOStream>
186void Serialize(TOStream& buf,
const std::pair<T1, T2>& v);
188template <
class T1,
class T2,
class TIStream>
189void Deserialize(TIStream& buf, std::pair<T1, T2>& v);
191template <
class T,
class TOStream>
192void Serialize(TOStream& buf,
const std::set<T>& m);
194template <
class T,
class TIStream>
195void Deserialize(TIStream& buf, std::set<T>& myset);
197template <
class TOStream>
198void Serialize(TOStream& buf,
const std::string& str);
200template <
class TIStream>
203template <
class TOStream>
206template <
class TIStream>
209template <
class T,
class TOStream>
210void Serialize(TOStream& buf,
const std::vector<T>& vec);
212template <
class T,
class TIStream>
213void Deserialize(TIStream& buf, std::vector<T>& vec);
215template <
class TOStream>
216inline void Serialize(TOStream& buf,
const std::vector<bool>::reference& boolRef);
218template <
class TIStream>
219inline void Deserialize(TIStream& buf, std::vector<bool>::reference boolRef);
221template <
class Key,
class T,
class TOStream>
222void Serialize(TOStream& buf,
const std::map<Key, T>& m);
224template <
class Key,
class T,
class TIStream>
225void Deserialize(TIStream& buf, std::map<Key, T>& m);
231template <
class T1,
class T2,
class TOStream>
232void Serialize(TOStream& buf,
const std::pair<T1, T2>& v)
238template <
class T1,
class T2,
class TIStream>
251template <
class T,
class TOStream>
254 Serialize<size_t>(buf, m.size());
255 for(
typename std::set<T>::const_iterator it = m.begin(); it != m.end(); ++it)
256 Serialize<T>(buf, *it);
260template <
class T,
class TIStream>
264 size_t size = Deserialize<size_t>(buf);
266 for(
size_t i = 0; i < size; ++i)
268 Deserialize<T>(buf, t);
270 myset.insert (myset.end(), t);
276template <
class TOStream>
279 size_t len = str.length();
282 buf.write(str.c_str(),
sizeof(
char) * len);
286template <
class TIStream>
292 char* flexBuf = NULL;
293 char* tBuf = staticBuf;
295 size_t len = Deserialize<size_t>(buf);
300 flexBuf =
new char[len + 1];
305 buf.read(tBuf,
sizeof(
char) * len);
324template <
class TOStream>
339 UG_THROW(
"Unknown variant type in Serialize:" << v.
type());
348template <
class TIStream>
351 int type = Deserialize<int>(buf);
367 UG_THROW(
"Unknown variant type in Deserialize: " << type);
378template <
class T,
class TOStream>
381 size_t size = vec.size();
383 for(
size_t i = 0; i < size; ++i){
389template <
class T,
class TIStream>
393 size_t size = Deserialize<size_t>(buf);
395 for(
size_t i = 0; i < size; ++i){
401template<
class TIStream>
402void Serialize(TIStream &buf,
const std::vector<bool> &vec)
404 size_t size=vec.size();
405 Serialize<size_t>(buf, size);
408 for(
size_t i = 0; i < size; ++i)
410 if(vec[i]) a |= (1 << j);
413 Serialize<char>(buf, a);
418 if(j) Serialize<char>(buf, a);
402void Serialize(TIStream &buf,
const std::vector<bool> &vec) {
…}
421template<
class TIStream>
425 size_t size = Deserialize<size_t>(buf);
429 for(
size_t i = 0; i < size; ++i, ++j)
433 Deserialize<char>(buf, a);
436 vec[i] = a & (1 << j);
447template <
class TOStream>
448inline void Serialize(TOStream& buf,
const std::vector<bool>::reference& boolRef)
450 char b = ((bool)boolRef) ? 1 : 0;
451 buf.write(&b,
sizeof(
char));
448inline void Serialize(TOStream& buf,
const std::vector<bool>::reference& boolRef) {
…}
457template <
class TIStream>
458inline void Deserialize(TIStream& buf, std::vector<bool>::reference boolRef)
461 buf.read(&b,
sizeof(
char));
462 boolRef = (bool)(b == 1);
458inline void Deserialize(TIStream& buf, std::vector<bool>::reference boolRef) {
…}
472template <
class Key,
class T,
class TOStream>
477 for(
typename std::map<Key, T>::const_iterator it = m.begin(); it != m.end(); ++it)
485template <
class Key,
class T,
class TIStream>
489 size_t size = Deserialize<size_t>(buf);
490 for(
size_t i = 0; i < size; ++i)
A variant can represent variables of different types.
Definition variant.h:87
double to_double() const
Definition variant.cpp:291
float to_float() const
Definition variant.cpp:259
bool to_bool() const
Definition variant.cpp:213
@ VT_STDSTRING
Definition variant.h:97
@ VT_BOOL
Definition variant.h:91
@ VT_INT
Definition variant.h:92
@ VT_CSTRING
Definition variant.h:96
@ VT_DOUBLE
Definition variant.h:95
@ VT_INVALID
Definition variant.h:90
@ VT_FLOAT
Definition variant.h:94
@ VT_POINTER
Definition variant.h:98
Type type() const
Definition variant.h:132
const char * to_c_string() const
Definition variant.cpp:307
const std::string & to_std_string() const
Definition variant.cpp:320
int to_int() const
Definition variant.cpp:229
#define UG_THROW(msg)
Definition error.h:57
void Deserialize(TIStream &buf, ParallelVector< T > &v)
Deerialize for ParallelVector<T>
Definition restart_bridge.cpp:112
void Serialize(TOStream &buf, const ParallelVector< T > &v)
Serialize for ParallelVector<T>
Definition restart_bridge.cpp:103