1#ifndef UTIL_XDR_FILE_O_ARCHIVE_H
2#define UTIL_XDR_FILE_O_ARCHIVE_H
12#include <util/space/Vector.h>
13#include <util/space/IntVector.h>
105 unsigned int version_;
122 template <
typename T>
125 serialize(*
this, data, version_);
132 template <
typename T>
135 serialize(*
this, data, version_);
158 const unsigned int version)
161 xdr_bool(ar.
xdrPtr(), &temp);
168 inline void serialize(XdrFileOArchive& ar,
char& data,
169 const unsigned int version)
170 { xdr_char(ar.xdrPtr(), &data); }
176 inline void serialize(XdrFileOArchive& ar,
unsigned int& data,
177 const unsigned int version)
178 { xdr_u_int(ar.xdrPtr(), &data); }
184 inline void serialize(XdrFileOArchive& ar,
int& data,
185 const unsigned int version)
186 { xdr_int(ar.xdrPtr(), &data); }
193 inline void serialize(XdrFileOArchive& ar,
unsigned long& data,
194 const unsigned int version)
195 { xdr_u_long(ar.xdrPtr(), &data); }
201 inline void serialize(XdrFileOArchive& ar,
long& data,
202 const unsigned int version)
203 { xdr_long(ar.xdrPtr(), &data); }
210 inline void serialize(XdrFileOArchive& ar,
float& data,
211 const unsigned int version)
212 { xdr_float(ar.xdrPtr(), &data); }
218 inline void serialize(XdrFileOArchive& ar,
double& data,
219 const unsigned int version)
220 { xdr_double(ar.xdrPtr(), &data); }
225 template <
typename T>
226 void serialize(XdrFileOArchive& ar, std::vector<T>& data,
227 const unsigned int version)
229 unsigned int size = data.size();
230 xdr_u_int(ar.xdrPtr(), &size);
231 for (
size_t i = 0; i < size; ++i) {
243 void serialize(XdrFileOArchive& ar, std::complex<float>& data,
244 const unsigned int version)
246 float a = data.real();
247 float b = data.imag();
248 xdr_float(ar.xdrPtr(), &a);
249 xdr_float(ar.xdrPtr(), &b);
257 void serialize(XdrFileOArchive& ar, std::complex<double>& data,
258 const unsigned int version)
260 double a = data.real();
261 double b = data.imag();
262 xdr_double(ar.xdrPtr(), &a);
263 xdr_double(ar.xdrPtr(), &b);
270 void serialize(XdrFileOArchive& ar, std::string& data,
271 const unsigned int version);
279 inline void serialize(XdrFileOArchive& ar, Vector& data,
280 const unsigned int version)
291 inline void serialize(XdrFileOArchive& ar, IntVector& data,
292 const unsigned int version)
Saving / output archive for binary XDR file.
XDR * xdrPtr()
Get a pointer to the enclosed XDR object.
XdrFileOArchive()
Constructor.
static bool is_loading()
Returns false;.
FILE * file()
Get the underlying ifstream by reference.
static bool is_saving()
Returns true;.
virtual ~XdrFileOArchive()
Destructor.
void init(FILE *file)
Associate with an open file and initialize.
XdrFileOArchive & operator&(T &data)
Save one object.
XdrFileOArchive & operator<<(T &data)
Save one object.
Utility classes for scientific computation.