29#ifndef GRID_SERIALISATION_BINARY_READER_H
30#define GRID_SERIALISATION_BINARY_READER_H
47 void push(
const std::string &s) {};
52 void writeDefault(
const std::string &s,
const std::vector<U> &x);
55 void writeMultiDim(
const std::string &s,
const std::vector<size_t> & Dimensions,
const U * pDataRowMajor,
size_t NumElements);
65 bool push(
const std::string &s) {
return true;}
70 void readDefault(
const std::string &s, std::vector<U> &output);
72 void readMultiDim(
const std::string &s, std::vector<U> &buf, std::vector<size_t> &dim);
81 file_.write((
char *)&x,
sizeof(
U));
90 uint64_t sz = x.size();
93 for (uint64_t i = 0; i < sz; ++i)
102 uint64_t rank =
static_cast<uint64_t
>( Dimensions.size() );
104 for(
auto i = 0 ; i < rank ; i++ )
105 tmp *= Dimensions[i];
106 assert( tmp == NumElements &&
"Dimensions don't match size of data being written" );
112 for(
auto i = 0 ; i < rank ; i++ ) {
116 for(
auto i = 0; i < NumElements; ++i)
117 write(
"", pDataRowMajor[i]);
121 template <
typename U>
124 file_.read((
char *)&output,
sizeof(
U));
130 template <
typename U>
137 for (uint64_t i = 0; i < sz; ++i)
143 template <
typename U>
147 uint64_t NumElements;
148 read(
"", NumElements);
156 for(
auto i = 0 ; i < rank ; i++ ) {
161 assert( count == NumElements &&
"Dimensions don't match size of data being read" );
163 for(
auto i = 0; i < count; ++i)
#define NAMESPACE_BEGIN(A)
static INTERNAL_PRECISION U
bool push(const std::string &s)
void readDefault(const std::string &s, U &output)
virtual ~BinaryReader(void)=default
void readMultiDim(const std::string &s, std::vector< U > &buf, std::vector< size_t > &dim)
BinaryReader(const std::string &fileName)
BinaryWriter(const std::string &fileName)
void writeDefault(const std::string &s, const U &x)
virtual ~BinaryWriter(void)=default
void writeMultiDim(const std::string &s, const std::vector< size_t > &Dimensions, const U *pDataRowMajor, size_t NumElements)
void push(const std::string &s)