1#ifndef UTIL_TEXT_FILE_O_ARCHIVE_H
2#define UTIL_TEXT_FILE_O_ARCHIVE_H
14#include <util/space/Vector.h>
15#include <util/space/IntVector.h>
68 std::ofstream&
file();
88 void pack(
const T& data);
97 void pack(
const T* array,
int n);
107 template <
typename T>
108 void pack(
const T* array,
int m,
int n,
int np);
113 std::ofstream* filePtr_;
116 unsigned int version_;
136 template <
typename T>
139 serialize(*
this, data, version_);
146 template <
typename T>
149 serialize(*
this, data, version_);
158 template <
typename T>
160 { *filePtr_ << data << std::endl; }
168 filePtr_->setf(std::ios::scientific);
170 filePtr_->precision(17);
171 *filePtr_ << data << std::endl;
177 template <
typename T>
180 for (
int i=0; i < n; ++i) {
181 *filePtr_ << array[i] <<
" ";
183 *filePtr_ << std::endl;
189 template <
typename T>
193 for (i=0; i < m; ++i) {
194 for (j=0; j < n; ++j) {
195 *filePtr_ << array[i*np + j] <<
" ";
197 *filePtr_ << std::endl;
207 filePtr_->setf(std::ios::scientific);
208 filePtr_->precision(16);
209 for (
int i=0; i < n; ++i) {
211 *filePtr_ << array[i] <<
" ";
213 *filePtr_ << std::endl;
222 inline void serialize(TextFileOArchive& ar,
bool& data,
223 const unsigned int version)
230 inline void serialize(TextFileOArchive& ar,
char& data,
231 const unsigned int version)
238 inline void serialize(TextFileOArchive& ar,
unsigned int& data,
239 const unsigned int version)
246 inline void serialize(TextFileOArchive& ar,
int& data,
247 const unsigned int version)
254 inline void serialize(TextFileOArchive& ar,
unsigned long& data,
255 const unsigned int version)
262 inline void serialize(TextFileOArchive& ar,
long& data,
263 const unsigned int version)
270 inline void serialize(TextFileOArchive& ar,
float& data,
271 const unsigned int version)
278 inline void serialize(TextFileOArchive& ar,
double& data,
279 const unsigned int version)
285 template <
typename T>
286 void serialize(TextFileOArchive& ar, std::vector<T>& data,
287 const unsigned int version)
289 size_t size = data.size();
291 for (
size_t i = 0; i < size; ++i) {
303 void serialize(TextFileOArchive& ar, std::complex<float>& data,
304 const unsigned int version)
312 void serialize(TextFileOArchive& ar, std::complex<double>& data,
313 const unsigned int version)
320 inline void serialize(TextFileOArchive& ar, std::string& data,
321 const unsigned int version)
323 int size = data.size();
336 inline void serialize(TextFileOArchive& ar, Vector& data,
337 const unsigned int version)
344 inline void serialize(TextFileOArchive& ar, IntVector& data,
345 const unsigned int version)
Saving archive for character based ostream.
TextFileOArchive & operator<<(T &data)
Save one T object to this archive.
TextFileOArchive()
Constructor.
static bool is_loading()
Returns false;.
static bool is_saving()
Returns true;.
virtual ~TextFileOArchive()
Destructor.
TextFileOArchive & operator&(T &data)
Save one T object to this archive.
std::ofstream & file()
Get the underlying ifstream by reference.
void pack(const T &data)
Save one T object to this archive.
Utility classes for scientific computation.