1#ifndef UTIL_XDR_FILE_I_ARCHIVE_H
2#define UTIL_XDR_FILE_I_ARCHIVE_H
12#include <util/space/Vector.h>
13#include <util/space/IntVector.h>
112 unsigned int version_;
132 template <
typename T>
135 serialize(*
this, data, version_);
142 template <
typename T>
145 serialize(*
this, data, version_);
168 const unsigned int version)
171 xdr_bool(ar.
xdrPtr(), &temp);
178 inline void serialize(XdrFileIArchive& ar,
char& data,
179 const unsigned int version)
180 { xdr_char(ar.xdrPtr(), &data); }
186 inline void serialize(XdrFileIArchive& ar,
unsigned int& data,
187 const unsigned int version)
188 { xdr_u_int(ar.xdrPtr(), &data); }
194 inline void serialize(XdrFileIArchive& ar,
int& data,
195 const unsigned int version)
196 { xdr_int(ar.xdrPtr(), &data); }
203 inline void serialize(XdrFileIArchive& ar,
unsigned long& data,
204 const unsigned int version)
205 { xdr_u_long(ar.xdrPtr(), &data); }
211 inline void serialize(XdrFileIArchive& ar,
long& data,
212 const unsigned int version)
213 { xdr_long(ar.xdrPtr(), &data); }
220 inline void serialize(XdrFileIArchive& ar,
float& data,
221 const unsigned int version)
222 { xdr_float(ar.xdrPtr(), &data); }
228 inline void serialize(XdrFileIArchive& ar,
double& data,
229 const unsigned int version)
230 { xdr_double(ar.xdrPtr(), &data); }
235 template <
typename T>
236 void serialize(XdrFileIArchive& ar, std::vector<T>& data,
237 const unsigned int version)
239 unsigned int size = data.size();
240 xdr_u_int(ar.xdrPtr(), &size);
241 for (
size_t i = 0; i < size; ++i) {
253 void serialize(XdrFileIArchive& ar, std::complex<float>& data,
254 const unsigned int version)
258 xdr_float(ar.xdrPtr(), &a);
259 xdr_float(ar.xdrPtr(), &b);
260 data = std::complex<float>(a, b);
268 void serialize(XdrFileIArchive& ar, std::complex<double>& data,
269 const unsigned int version)
273 xdr_double(ar.xdrPtr(), &a);
274 xdr_double(ar.xdrPtr(), &b);
275 data = std::complex<double>(a, b);
282 void serialize(XdrFileIArchive& ar, std::string& data,
283 const unsigned int version);
291 inline void serialize(XdrFileIArchive& ar, Vector& data,
292 const unsigned int version)
303 inline void serialize(XdrFileIArchive& ar, IntVector& data,
304 const unsigned int version)
Loading / input archive for binary XDR file.
FILE * file()
Get the underlying file handle.
static bool is_loading()
Returns true.
XdrFileIArchive()
Constructor.
static bool is_saving()
Returns false.
XdrFileIArchive & operator&(T &data)
Load one object.
void init(FILE *file)
Initialize by associating with an open file.
virtual ~XdrFileIArchive()
Destructor.
XDR * xdrPtr()
Get a pointer to the enclosed XDR object.
XdrFileIArchive(std::ofstream &file)
Constructor.
XdrFileIArchive & operator>>(T &data)
Load one object.
Utility classes for scientific computation.