41 #define TOON_ALIGN8 __attribute__ ((aligned(8)))
62 template<
int Size,
class Precision,
bool heap>
class StackOrHeap;
64 template<
int Size,
class Precision>
class StackOrHeap<Size,Precision,0>
71 Precision my_data[Size];
85 template<
int Size,
class Precision>
class StackOrHeap<Size, Precision, 1>
89 :my_data(new Precision[Size])
103 :my_data(new Precision[Size])
105 for(
int i=0; i < Size; i++)
106 my_data[i] = from.my_data[i];
183 :my_data(new Precision[v.my_size]), my_size(v.my_size)
185 for(
int i=0; i < my_size; i++)
186 my_data[i] = v.my_data[i];
190 :my_data(new Precision[s]), my_size(s)
197 : my_data(new Precision[op.
size()]), my_size(op.
size())
269 return numbers.size();
295 template<
int S>
struct SFINAE_dummy{
typedef void type;};
319 numbers.resize(newsize);
327 int old_size =
size();
339 template<
int S,
class Precision,
class PtrType=Precision*,
class ConstPtrType=const Precision*,
class RefType=Precision&,
class ConstRefType=const Precision&>
struct VectorSlice
385 template<
class Precision,
class PtrType,
class ConstPtrType,
class RefType,
class ConstRefType>
struct VectorSlice<
Dynamic, Precision, PtrType, ConstPtrType, RefType, ConstRefType>
391 :my_data(d), my_size(s)
484 template<
typename Op>
510 template<
typename Op>
519 template<
int R,
int C,
class Precision,
bool FullyStatic=(R>=0 && C>=0)>
554 template<
int R,
int C,
class Precision>
struct MatrixAlloc<R, C, Precision, false>
569 for(
int i=0; i < size; i++) {
570 my_data[i] = m.my_data[i];
const Precision * data() const
VectorAlloc(const Operator< Op > &)
Construction from an Operator. See Operator::size().
MatrixSlice(Precision *p)
VectorAlloc(const Operator< Op > &op)
int size() const
Return the size of the vector.
const Precision * get_data_ptr() const
Precision * get_data_ptr()
SizeHolder(int)
Construct from an int and discard it.
Precision & ReferenceType
int size() const
Simply return the statcally known size.
VectorAlloc()
Default constructor (only for statically sized vectors)
const Precision * get_data_ptr() const
const Precision * ConstPointerType
VectorSlice(const Operator< Op > &op)
const Precision * get_data_ptr() const
MatrixAlloc(const Operator< Op > &)
ColSizeHolder(const Operator< Op > &op)
void try_destructive_resize(int newsize)
Everything lives inside this namespace.
SFINAE_dummy< sizeof(&Operator< Op >::size)>::type try_destructive_resize(const Operator< Op > &op)
std::vector< Precision > numbers
static const int Dynamic
Template size value used to indicate dynamically sized vectors and matrices.
void try_destructive_resize(int)
ColStrideHolder(const Operator< Op > &op)
ConstPtrType data() const
static void debug_initialize(P *, int)
MatrixAlloc(const MatrixAlloc &m)
VectorSlice(PtrType d, int s)
StrideHolder(const Operator< Op > &op)
void try_destructive_resize(const Operator< Op > &)
void try_destructive_resize(int)
MatrixSlice(Precision *p, int r, int c)
Precision * get_data_ptr()
void try_destructive_resize(const Op &)
Precision * get_data_ptr()
ConstPtrType data() const
void try_destructive_resize(const Operator< Op > &)
const Precision * get_data_ptr() const
VectorAlloc(const Operator< Op > &op)
void try_destructive_resize(const Operator< Op > &)
MatrixSlice(const Operator< Op > &op)
VectorSlice(PtrType p, int)
const Precision * get_data_ptr() const
Precision * get_data_ptr()
ConstPtrType ConstPointerType
const Precision * data() const
VectorSlice(const Operator< Op > &op)
SizeHolder()
Default constrution.
void try_destructive_resize(int)
VectorAlloc(int)
Construction from a size (required by damic vectors, ignored otherwise).
static const int Resizable
void try_destructive_resize(int)
const Precision & ConstReferenceType
MatrixAlloc(int r, int c)
ConstRefType ConstReferenceType
RowSizeHolder(const Operator< Op > &op)
Precision * get_data_ptr()
const Precision * data() const
double my_data[Size] TOON_ALIGN8
ConstPtrType ConstPointerType
void try_destructive_resize(const Operator< Op > &)
StackOrHeap(const StackOrHeap &from)
VectorAlloc(const VectorAlloc &v)
StrideHolder(const Operator< Op > &)
int num_rows() const
Return the number of rows.
int num_cols() const
Return the number of columns.
RowStrideHolder(const Operator< Op > &op)
MatrixAlloc(const Operator< Op > &op)
ConstRefType ConstReferenceType