1#ifndef UTIL_BINARY_FILE_I_ARCHIVE_H
2#define UTIL_BINARY_FILE_I_ARCHIVE_H
14#include <util/space/Vector.h>
15#include <util/space/IntVector.h>
68 std::ifstream&
file();
95 void unpack(T* array,
int n);
110 template <
typename T>
111 void unpack(T* array,
int m,
int n,
int np);
116 std::ifstream* filePtr_;
119 unsigned int version_;
139 template <
typename T>
142 serialize(*
this, data, version_);
149 template <
typename T>
152 serialize(*
this, data, version_);
161 template <
typename T>
163 { filePtr_->read( (
char*)(&data),
sizeof(T) ); }
168 template <
typename T>
171 for (
int i=0; i < n; ++i) {
172 filePtr_->read( (
char*)(&array[i]),
sizeof(T));
179 template <
typename T>
183 for (i = 0; i < m; ++i) {
184 for (j = 0; j < n; ++j) {
185 filePtr_->read( (
char*)(&array[i*np + j]),
sizeof(T));
197 const unsigned int version)
204 inline void serialize(BinaryFileIArchive& ar,
char& data,
205 const unsigned int version)
212 inline void serialize(BinaryFileIArchive& ar,
unsigned int& data,
213 const unsigned int version)
220 inline void serialize(BinaryFileIArchive& ar,
int& data,
221 const unsigned int version)
228 inline void serialize(BinaryFileIArchive& ar,
unsigned long& data,
229 const unsigned int version)
236 inline void serialize(BinaryFileIArchive& ar,
long& data,
237 const unsigned int version)
244 inline void serialize(BinaryFileIArchive& ar,
float& data,
245 const unsigned int version)
252 inline void serialize(BinaryFileIArchive& ar,
double& data,
253 const unsigned int version)
259 template <
typename T>
260 void serialize(BinaryFileIArchive& ar, std::vector<T>& data,
261 const unsigned int version)
268 for (
size_t i = 0; i < size; ++i) {
270 data.push_back(element);
281 void serialize(BinaryFileIArchive& ar, std::complex<float>& data,
282 const unsigned int version)
290 void serialize(BinaryFileIArchive& ar, std::complex<double>& data,
291 const unsigned int version)
298 void serialize(BinaryFileIArchive& ar, std::string& data,
299 const unsigned int version);
307 inline void serialize(BinaryFileIArchive& ar, Vector& data,
308 const unsigned int version)
315 inline void serialize(BinaryFileIArchive& ar, IntVector& data,
316 const unsigned int version)
Saving archive for binary istream.
BinaryFileIArchive & operator>>(T &data)
Read one object.
static bool is_loading()
Returns false;.
void unpack(T &data)
Unpack a single T object.
std::ifstream & file()
Get the underlying ifstream by reference.
virtual ~BinaryFileIArchive()
Destructor.
BinaryFileIArchive & operator&(T &data)
Read one object.
static bool is_saving()
Returns true;.
BinaryFileIArchive()
Constructor.
Utility classes for scientific computation.