tue_serialization
src
conversions.cpp
Go to the documentation of this file.
1
#include "
tue/serialization/conversions.h
"
2
#include "
tue/serialization/output_archive.h
"
3
4
#include <string.h>
// memcpy
5
6
namespace
tue
7
{
8
namespace
serialization
9
{
10
11
// ----------------------------------------------------------------------------------------------------
12
13
void
convert
(
Archive
& a,
std::vector<unsigned char>
& data)
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
35
void
convert
(
std::istream
& s,
Archive
& a)
36
{
37
std::vector<unsigned char>
data;
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
57
void
convert
(
std::vector<unsigned char>
& data,
Archive
& a)
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
Generated on Sun Feb 23 2025 04:34:27 for tue_serialization by
1.8.17