ed
archive.h
Go to the documentation of this file.
1 #ifndef ED_ARCHIVE_H_
2 #define ED_ARCHIVE_H_
3 
4 #include <iostream>
5 
6 namespace ed
7 {
8 
9 class OArchive {
10 
11 public:
12 
13  OArchive(std::ostream& stream, int version) : stream_(stream) {
14  stream_.write((char*)&version, sizeof(version));
15  }
16 
17  virtual ~OArchive() {}
18 
19  inline OArchive& operator<<(float f) { stream_.write((char*)&f, sizeof(f)); return *this; }
20 
21  inline OArchive& operator<<(double d) { stream_.write((char*)&d, sizeof(d)); return *this; }
22 
23  inline OArchive& operator<<(int i) { stream_.write((char*)&i, sizeof(i)); return *this; }
24 
25  inline OArchive& operator<<(std::string s) { stream_.write(s.c_str(), s.size() + 1); return *this; }
26 
27  inline std::ostream& getStream() { return stream_; }
28 
29 protected:
30 
32 
33 };
34 
35 class IArchive {
36 
37 public:
38 
39  IArchive(std::istream& stream) : stream_(stream) {
40  stream_.read((char*)&version_, sizeof(version_));
41  }
42 
43  virtual ~IArchive() {}
44 
45  inline IArchive& operator>>(float& f) { stream_.read((char*)&f, sizeof(f)); return *this; }
46 
47  inline IArchive& operator>>(double& d) { stream_.read((char*)&d, sizeof(d)); return *this; }
48 
49  inline IArchive& operator>>(int& i) { stream_.read((char*)&i, sizeof(i)); return *this; }
50 
52  s.clear();
53  char c;
54  while(true) {
55  stream_.read(&c, 1);
56  if (c == '\0') {
57  break;
58  }
59  s += c;
60  }
61  return *this;
62  }
63 
64  inline std::istream& getStream() { return stream_; }
65 
66  inline int getVersion() { return version_; }
67 
68 protected:
69 
71 
72  int version_;
73 
74 };
75 
76 }
77 
78 #endif
ed::IArchive::stream_
std::istream & stream_
Definition: archive.h:70
std::string
ed::IArchive::operator>>
IArchive & operator>>(int &i)
Definition: archive.h:49
ed::OArchive::getStream
std::ostream & getStream()
Definition: archive.h:27
ed::OArchive::stream_
std::ostream & stream_
Definition: archive.h:31
std::string::size
T size(T... args)
ed::IArchive::version_
int version_
Definition: archive.h:72
ed::OArchive::operator<<
OArchive & operator<<(float f)
Definition: archive.h:19
std::istream::read
T read(T... args)
iostream
ed::OArchive
Definition: archive.h:9
std::ostream::write
T write(T... args)
std::string::clear
T clear(T... args)
ed::OArchive::OArchive
OArchive(std::ostream &stream, int version)
Definition: archive.h:13
ed::IArchive::getVersion
int getVersion()
Definition: archive.h:66
std::ostream
std::string::c_str
T c_str(T... args)
ed::IArchive::IArchive
IArchive(std::istream &stream)
Definition: archive.h:39
ed::IArchive::operator>>
IArchive & operator>>(double &d)
Definition: archive.h:47
ed::OArchive::~OArchive
virtual ~OArchive()
Definition: archive.h:17
ed::OArchive::operator<<
OArchive & operator<<(int i)
Definition: archive.h:23
ed::IArchive
Definition: archive.h:35
ed::IArchive::~IArchive
virtual ~IArchive()
Definition: archive.h:43
ed
Definition: convex_hull.h:8
ed::OArchive::operator<<
OArchive & operator<<(double d)
Definition: archive.h:21
ed::IArchive::operator>>
IArchive & operator>>(float &f)
Definition: archive.h:45
c
void c()
ed::OArchive::operator<<
OArchive & operator<<(std::string s)
Definition: archive.h:25
std::istream
ed::IArchive::getStream
std::istream & getStream()
Definition: archive.h:64
ed::IArchive::operator>>
IArchive & operator>>(std::string &s)
Definition: archive.h:51