6 #ifndef MYRAMATH_UTILITY_WORKSPACE_H 7 #define MYRAMATH_UTILITY_WORKSPACE_H 27 template<
class POD>
void swap_pod(POD& pod1, POD& pod2)
51 for (
size_t s = 0; s < S; ++s)
58 swap_pod(this->S, that.S);
59 swap_pod(this->p, that.p);
64 { this->
swap(that);
return *
this; }
69 allocate(in.read<
size_t>());
70 for (
size_t s = 0; s < S; ++s)
78 for (
size_t s = 0; s < S; ++s)
92 T* end() {
return p+S; }
95 const T*
begin()
const {
return p; }
96 const T* end()
const {
return p+S; }
113 for (
size_t s = 0; s < S; ++s)
120 for (
size_t s = 0; s < S; s += 1024)
131 void allocate(
size_t in_S)
137 p = (T*)malloc(
sizeof(T)*S);
139 throw std::bad_alloc();
189 template<
class T> std::ostream& operator << (std::ostream& out, const Workspace<T>& w)
192 for (
const T* i = w.begin(); i != w.end(); ++i)
194 out <<
"] (" << w.size() <<
")";
void touch()
Explicit first-touch.
Definition: Workspace.h:118
void write(OutputStream &out) const
Writes to OutputStream.
Definition: Workspace.h:75
ReaderWriter<T>, encapsulates a read()/write() pair for type T.
size_t size() const
Size inspector.
Definition: Workspace.h:99
Workspace(InputStream &in)
InputStream constructor.
Definition: Workspace.h:67
Workspace(const Workspace &that)
Copy constructor. Does initialize values (by copying from that)
Definition: Workspace.h:48
Abstraction layer, serializable objects write themselves to these.
Definition: Streams.h:39
T * begin()
Mutable pointer range over contiguous storage.
Definition: Workspace.h:91
void swap(Workspace &that)
Member swap.
Definition: Workspace.h:56
const T & operator[](size_t i) const
Random accessor/mutator, operator [].
Definition: Workspace.h:87
void resize(size_t R)
Resizes, does not initialize with values.
Definition: Workspace.h:103
Fixed size container of values.
Definition: Workspace.h:35
Workspace()
Default constructor, makes size 0.
Definition: Workspace.h:40
void resize(size_t R, T t)
Resizes, does initialize with values.
Definition: Workspace.h:110
const T & operator()(size_t i) const
Random accessor/mutator, operator ()
Definition: Workspace.h:83
~Workspace()
Frees internal resources.
Definition: Workspace.h:125
Workspace & operator=(Workspace that)
Copy-assignment operator, copy construct and swap idiom.
Definition: Workspace.h:63
const T * begin() const
Const pointer range over contiguous storage.
Definition: Workspace.h:95
Simplistic random number functions.
Workspace(size_t in_S)
Constructor, requires size. Does not initialize values.
Definition: Workspace.h:44
Bases classes for binary input/output streams.