32 template<
int Size,
class Precision,
int Str
ide,
class Mem>
struct GenericVBase;
40 template<
int Str
ide,
class Ptr=Default,
class CPtr=Default,
class Ref=Default,
class CRef=Default>
44 template<
int Size,
typename Precision>
46 :
public GenericVBase<Size, Precision, Stride, VectorSlice<Size, Precision, Ptr, CPtr, Ref, CRef> > {
47 typedef typename VectorSlice<Size, Precision, Ptr, CPtr, Ref, CRef>::PointerType PointerType;
49 VLayout(PointerType d,
int length,
int stride)
50 :
GenericVBase<Size, Precision, Stride, VectorSlice<Size, Precision, Ptr, CPtr, Ref, CRef> >(d, length, stride){
64 template<
int Size,
typename Precision>
66 :
public GenericVBase<Size, Precision, Stride, VectorSlice<Size, Precision> > {
68 typedef typename VectorSlice<Size, Precision>::PointerType PointerType;
70 VLayout(PointerType d,
int length,
int stride)
89 template<
int Size,
class Precision>
91 :
public GenericVBase<Size, Precision, 1, VectorAlloc<Size, Precision> > {
98 VLayout(std::initializer_list<Precision> i)
102 template<
typename Precision2,
int Size2>
103 VLayout(
const Precision2(&i)[Size2])
122 template<
int Size,
typename Precision,
int Str
ide,
typename Mem>
struct GenericVBase:
public Mem,
public StrideHolder<Stride>
138 template<
typename Precision2,
int Size2>
143 GenericVBase(std::initializer_list<Precision> i)
147 typedef typename Mem::PointerType PointerType;
148 typedef typename Mem::ConstPointerType ConstPointerType;
149 typedef typename Mem::ReferenceType ReferenceType;
150 typedef typename Mem::ConstReferenceType ConstReferenceType;
152 GenericVBase(PointerType d,
int length,
int stride)
162 ReferenceType operator[](
int i) {
163 Internal::check_index(size(), i);
164 return data()[i * stride()];
167 ConstReferenceType operator[](
int i)
const {
168 Internal::check_index(size(), i);
169 return data()[i * stride()];
177 template<
int Start,
int Length>
183 template<
int Start,
int Length>
194 return slice<Start, Length>(Start, Length);
199 return slice<Start, Length>(Start, Length);
203 return slice<Dynamic, Dynamic>(start, length);
207 return slice<Dynamic, Dynamic>(start, length);
Definition: slice_error.hh:56
Pretty generic SFINAE introspection generator.
Definition: vec_test.cc:21
A vector.
Definition: vector.hh:126
A matrix.
Definition: matrix.hh:105
A diagonal matrix.
Definition: diagmatrix.h:108
Definition: operators.hh:119
Definition: allocator.hh:670