tue_serialization
archive.h
Go to the documentation of this file.
1 #ifndef TUE_SERIALIZATION_ARCHIVE_H_
2 #define TUE_SERIALIZATION_ARCHIVE_H_
3 
4 #include <sstream>
5 #include <vector>
6 
8 
9 namespace tue
10 {
11 namespace serialization
12 {
13 
14 class Archive {
15 
16 public:
17 
18  Archive() : version_(tue::serialization::VERSION)
19  {
20  }
21 
22  virtual ~Archive() {}
23 
24  // - - - - - - - - - - - - - - - - - - - - READ - - - - - - - - - - - - - - - - - - - -
25 
26  inline Archive& operator>>(unsigned char& c) { stream_.read((char*)&c, sizeof(c)); return *this; }
27 
28  inline Archive& operator>>(float& f) { stream_.read((char*)&f, sizeof(f)); return *this; }
29 
30  inline Archive& operator>>(double& d) { stream_.read((char*)&d, sizeof(d)); return *this; }
31 
32  inline Archive& operator>>(int& i) { stream_.read((char*)&i, sizeof(i)); return *this; }
33 
35  s.clear();
36  char c;
37  while(!stream_.eof()) {
38  stream_.read(&c, 1);
39  if (c == '\0') {
40  break;
41  }
42  s += c;
43  }
44  return *this;
45  }
46 
47  // - - - - - - - - - - - - - - - - - - - - WRITE - - - - - - - - - - - - - - - - - - - -
48 
49  inline Archive& operator<<(unsigned char c) { stream_.write((char*)&c, sizeof(c)); return *this; }
50 
51  inline Archive& operator<<(float f) { stream_.write((char*)&f, sizeof(f)); return *this; }
52 
53  inline Archive& operator<<(double d) { stream_.write((char*)&d, sizeof(d)); return *this; }
54 
55  inline Archive& operator<<(int i) { stream_.write((char*)&i, sizeof(i)); return *this; }
56 
57  inline Archive& operator<<(std::string s) { stream_.write(s.c_str(), s.size() + 1); return *this; }
58 
59  inline std::stringstream& stream() { return stream_; }
60 
61  inline const std::stringstream& stream() const { return stream_; }
62 
63  inline int version() const { return version_; }
64 
65 protected:
66 
68 
69  int version_;
70 
71  friend void convert(std::vector<unsigned char>& data, Archive& a);
72 
73 };
74 
75 }
76 
77 }
78 
79 #endif
sstream
std::string
tue::serialization::Archive::operator>>
Archive & operator>>(int &i)
Definition: archive.h:32
vector
std::string::size
T size(T... args)
std::stringstream
tue::serialization::Archive::stream
std::stringstream & stream()
Definition: archive.h:59
std::stringstream::read
T read(T... args)
version.h
std::stringstream::write
T write(T... args)
std::string::clear
T clear(T... args)
tue::serialization::Archive::stream
const std::stringstream & stream() const
Definition: archive.h:61
tue::serialization::Archive::stream_
std::stringstream stream_
Definition: archive.h:67
tue::serialization::Archive::operator<<
Archive & operator<<(std::string s)
Definition: archive.h:57
tue::serialization::Archive::operator>>
Archive & operator>>(float &f)
Definition: archive.h:28
tue::serialization::Archive::convert
friend void convert(std::vector< unsigned char > &data, Archive &a)
Definition: conversions.cpp:57
std::string::c_str
T c_str(T... args)
tue::serialization::Archive::Archive
Archive()
Definition: archive.h:18
tue::serialization::Archive::operator<<
Archive & operator<<(unsigned char c)
Definition: archive.h:49
tue::serialization::Archive::operator<<
Archive & operator<<(double d)
Definition: archive.h:53
tue::serialization::Archive::~Archive
virtual ~Archive()
Definition: archive.h:22
tue::serialization::VERSION
static int VERSION
Definition: version.h:9
tue::serialization::Archive::operator>>
Archive & operator>>(unsigned char &c)
Definition: archive.h:26
tue::serialization::Archive::operator>>
Archive & operator>>(double &d)
Definition: archive.h:30
tue::serialization::Archive::operator<<
Archive & operator<<(int i)
Definition: archive.h:55
tue::serialization::Archive::version
int version() const
Definition: archive.h:63
tue::serialization::Archive
Definition: archive.h:14
tue::serialization::Archive::version_
int version_
Definition: archive.h:69
tue
Definition: archive.h:9
tue::serialization::Archive::operator<<
Archive & operator<<(float f)
Definition: archive.h:51
std::stringstream::eof
T eof(T... args)
tue::serialization::Archive::operator>>
Archive & operator>>(std::string &s)
Definition: archive.h:34