tue_serialization
conversions.cpp
Go to the documentation of this file.
3 
4 #include <string.h> // memcpy
5 
6 namespace tue
7 {
8 namespace serialization
9 {
10 
11 // ----------------------------------------------------------------------------------------------------
12 
14 {
15  int version = a.version();
16  convert(a.stream(), data, sizeof(version));
17 
18  // Fill version bytes
19  memcpy(&data[0], (char*)&version, sizeof(version));
20 }
21 
22 // ----------------------------------------------------------------------------------------------------
23 
24 void convert(const Archive& a, std::ostream& out)
25 {
26  // Write the version to out
27  OutputArchive a_out(out);
28 
29  // Write data to out
30  out << a.stream().rdbuf();
31 }
32 
33 // ----------------------------------------------------------------------------------------------------
34 
36 {
38  convert(s, data);
39  convert(data, a);
40 }
41 
42 // ----------------------------------------------------------------------------------------------------
43 
44 void convert(std::istream& s, std::vector<unsigned char>& data, int d_offset)
45 {
46  // get its size:
47  s.seekg(0, std::ios::end);
48  int size = s.tellg();
49  s.seekg(0, std::ios::beg);
50 
51  data.resize(size + d_offset);
52  s.read((char*)&data[d_offset], size);
53 }
54 
55 // ----------------------------------------------------------------------------------------------------
56 
58 {
59  // Read version (int)
60  int version;
61  memcpy((char*)&(a.version_), &data[0], sizeof(version));
62 
63  // Read the rest
64  convert(data, a.stream(), sizeof(version));
65 }
66 
67 // ----------------------------------------------------------------------------------------------------
68 
69 void convert(const std::vector<unsigned char>& data, std::ostream& s, int d_offset)
70 {
71  s.write((char*)&data[d_offset], data.size() - d_offset);
72 }
73 
74 }
75 
76 }
std::stringstream::rdbuf
T rdbuf(T... args)
std::istream::tellg
T tellg(T... args)
std::vector
tue::serialization::Archive::stream
std::stringstream & stream()
Definition: archive.h:59
tue::serialization::OutputArchive
Definition: output_archive.h:13
std::istream::read
T read(T... args)
std::ostream::write
T write(T... args)
conversions.h
output_archive.h
tue::serialization::convert
void convert(Archive &a, std::vector< unsigned char > &data)
Definition: conversions.cpp:13
std::ostream
std::istream::seekg
T seekg(T... args)
tue::serialization::Archive::version
int version() const
Definition: archive.h:63
tue::serialization::Archive
Definition: archive.h:14
std::istream
tue::serialization::Archive::version_
int version_
Definition: archive.h:69
tue
Definition: archive.h:9