1#ifndef UTIL_MEMORY_COUNTER_H
2#define UTIL_MEMORY_COUNTER_H
13#include <util/space/Vector.h>
14#include <util/space/IntVector.h>
85 void count(
const T& data);
95 void count(T* array,
int n);
122 friend void serialize<>(
MemoryCounter&, std::string&,
const unsigned int);
129 template <
typename T>
134 return counter.
size();
154 template <
typename T>
157 serialize(*
this, data, version_);
164 template <
typename T>
167 serialize(*
this, data, version_);
176 template <
typename T>
178 { size_ +=
sizeof(T); }
183 template <
typename T>
185 { size_ += n*
sizeof(T); }
197 const unsigned int version)
204 inline void serialize(MemoryCounter& ar,
char& data,
205 const unsigned int version)
212 inline void serialize(MemoryCounter& ar,
unsigned int& data,
213 const unsigned int version)
220 inline void serialize(MemoryCounter& ar,
int& data,
221 const unsigned int version)
228 inline void serialize(MemoryCounter& ar,
unsigned long& data,
229 const unsigned int version)
236 inline void serialize(MemoryCounter& ar,
long& data,
237 const unsigned int version)
244 inline void serialize(MemoryCounter& ar,
float& data,
245 const unsigned int version)
252 inline void serialize(MemoryCounter& ar,
double& data,
253 const unsigned int version)
262 inline void serialize(MemoryCounter& ar, std::complex<float>& data,
263 const unsigned int version)
270 inline void serialize(MemoryCounter& ar, std::complex<double>& data,
271 const unsigned int version)
278 inline void serialize(MemoryCounter& ar, std::string& data,
279 const unsigned int version)
280 { ar.size_ +=
sizeof(size_t) + (data.size() + 1)*
sizeof(
char); }
288 inline void serialize(MemoryCounter& ar, Vector& data,
289 const unsigned int version)
296 inline void serialize(MemoryCounter& ar, IntVector& data,
297 const unsigned int version)
Archive to computed packed size of a sequence of objects, in bytes.
MemoryCounter()
Constructor.
MemoryCounter & operator<<(T &data)
Add packed size of one object.
~MemoryCounter()
Destructor.
static bool is_loading()
Returns false.
static bool is_saving()
Returns true.
size_t size() const
Return size required for archive, in Bytes.
void count(const T &data)
Add size of one object in memory.
void clear()
Resets the size counter to zero.
MemoryCounter & operator&(T &data)
Add packed size of one object.
Utility classes for scientific computation.
int memorySize(T &data)
Function template to compute memory size of one object.