1#ifndef UTIL_BINARY_FILE_O_ARCHIVE_H
2#define UTIL_BINARY_FILE_O_ARCHIVE_H
14#include <util/space/Vector.h>
15#include <util/space/IntVector.h>
68 std::ofstream&
file();
86 void pack(
const T& data);
95 void pack(
const T* array,
int n);
108 template <
typename T>
109 void pack(
const T* array,
int m,
int n,
int np);
114 std::ofstream* filePtr_;
117 unsigned int version_;
137 template <
typename T>
140 serialize(*
this, data, version_);
147 template <
typename T>
150 serialize(*
this, data, version_);
159 template <
typename T>
161 { filePtr_->write( (
char*)(&data),
sizeof(T)); }
166 template <
typename T>
169 for (
int i=0; i < n; ++i) {
170 filePtr_->write( (
char*)(&array[i]),
sizeof(T));
177 template <
typename T>
181 for (i=0; i < m; ++i) {
182 for (j=0; j < n; ++j) {
183 filePtr_->write( (
char*)(&array[i*np + j]),
sizeof(T));
195 const unsigned int version)
202 inline void serialize(BinaryFileOArchive& ar,
char& data,
203 const unsigned int version)
210 inline void serialize(BinaryFileOArchive& ar,
unsigned int& data,
211 const unsigned int version)
218 inline void serialize(BinaryFileOArchive& ar,
int& data,
219 const unsigned int version)
226 inline void serialize(BinaryFileOArchive& ar,
unsigned long& data,
227 const unsigned int version)
234 inline void serialize(BinaryFileOArchive& ar,
long& data,
235 const unsigned int version)
242 inline void serialize(BinaryFileOArchive& ar,
float& data,
243 const unsigned int version)
250 inline void serialize(BinaryFileOArchive& ar,
double& data,
251 const unsigned int version)
257 template <
typename T>
258 void serialize(BinaryFileOArchive& ar, std::vector<T>& data,
259 const unsigned int version)
261 size_t size = data.size();
263 for (
size_t i = 0; i < size; ++i) {
275 void serialize(BinaryFileOArchive& ar, std::complex<float>& data,
276 const unsigned int version)
284 void serialize(BinaryFileOArchive& ar, std::complex<double>& data,
285 const unsigned int version)
292 inline void serialize(BinaryFileOArchive& ar, std::string& data,
293 const unsigned int version)
295 size_t size = data.size() + 1;
297 const char* temp = data.c_str();
307 inline void serialize(BinaryFileOArchive& ar, Vector& data,
308 const unsigned int version)
315 inline void serialize(BinaryFileOArchive& ar, IntVector& data,
316 const unsigned int version)
Saving / output archive for binary ostream.
static bool is_loading()
Returns false;.
BinaryFileOArchive & operator<<(T &data)
Save one object.
BinaryFileOArchive()
Constructor.
BinaryFileOArchive & operator&(T &data)
Save one object.
std::ofstream & file()
Get the underlying ifstream by reference.
static bool is_saving()
Returns true;.
virtual ~BinaryFileOArchive()
Destructor.
void pack(const T &data)
Pack one object of type T.
Utility classes for scientific computation.