📄 array.h
字号:
data_ += zeroOffset_;
}
/*
* Construct an array from an existing block of memory, with a
* given set of strides. Ownership is not acquired (i.e. the memory
* block will not be freed by Blitz++).
*/
Array(T_numtype* _bz_restrict dataFirst, TinyVector<int, N_rank> shape,
TinyVector<int, N_rank> stride,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: MemoryBlockReference<T_numtype>(product(shape), dataFirst,
neverDeleteData),
storage_(storage)
{
BZPRECONDITION(dataFirst != 0);
length_ = shape;
stride_ = stride;
calculateZeroOffset();
data_ += zeroOffset_;
}
/*
* Construct an array from an existing block of memory.
*/
Array(T_numtype* _bz_restrict dataFirst, TinyVector<int, N_rank> shape,
preexistingMemoryPolicy deletionPolicy,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: MemoryBlockReference<T_numtype>(product(shape), dataFirst,
deletionPolicy),
storage_(storage)
{
BZPRECONDITION(dataFirst != 0);
length_ = shape;
computeStrides();
data_ += zeroOffset_;
if (deletionPolicy == duplicateData)
reference(copy());
}
/*
* Construct an array from an existing block of memory, with a
* given set of strides.
*/
Array(T_numtype* _bz_restrict dataFirst, TinyVector<int, N_rank> shape,
TinyVector<int, N_rank> stride,
preexistingMemoryPolicy deletionPolicy,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: MemoryBlockReference<T_numtype>(product(shape), dataFirst,
deletionPolicy),
storage_(storage)
{
BZPRECONDITION(dataFirst != 0);
length_ = shape;
stride_ = stride;
calculateZeroOffset();
data_ += zeroOffset_;
if (deletionPolicy == duplicateData)
reference(copy());
}
/*
* This constructor takes an extent (length) vector and storage format.
*/
Array(const TinyVector<int, N_rank>& extent,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: storage_(storage)
{
length_ = extent;
setupStorage(N_rank - 1);
}
/*
* This construct takes a vector of bases (lbounds) and a vector of
* extents.
*/
Array(const TinyVector<int, N_rank>& lbounds,
const TinyVector<int, N_rank>& extent,
const GeneralArrayStorage<N_rank>& storage
= GeneralArrayStorage<N_rank>());
/*
* These constructors allow arbitrary bases (starting indices) to be set.
* e.g. Array<int,2> A(Range(10,20), Range(20,30))
* will create an 11x11 array whose indices are 10..20 and 20..30
*/
Array(Range r0,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: storage_(storage)
{
BZPRECONDITION(r0.isAscendingContiguous());
length_[0] = r0.length();
storage_.setBase(0, r0.first());
setupStorage(0);
}
Array(Range r0, Range r1,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: storage_(storage)
{
BZPRECONDITION(r0.isAscendingContiguous() &&
r1.isAscendingContiguous());
length_[0] = r0.length();
storage_.setBase(0, r0.first());
length_[1] = r1.length();
storage_.setBase(1, r1.first());
setupStorage(1);
}
Array(Range r0, Range r1, Range r2,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: storage_(storage)
{
BZPRECONDITION(r0.isAscendingContiguous() &&
r1.isAscendingContiguous() && r2.isAscendingContiguous());
length_[0] = r0.length();
storage_.setBase(0, r0.first());
length_[1] = r1.length();
storage_.setBase(1, r1.first());
length_[2] = r2.length();
storage_.setBase(2, r2.first());
setupStorage(2);
}
Array(Range r0, Range r1, Range r2, Range r3,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: storage_(storage)
{
BZPRECONDITION(r0.isAscendingContiguous() &&
r1.isAscendingContiguous() && r2.isAscendingContiguous()
&& r3.isAscendingContiguous());
length_[0] = r0.length();
storage_.setBase(0, r0.first());
length_[1] = r1.length();
storage_.setBase(1, r1.first());
length_[2] = r2.length();
storage_.setBase(2, r2.first());
length_[3] = r3.length();
storage_.setBase(3, r3.first());
setupStorage(3);
}
Array(Range r0, Range r1, Range r2, Range r3, Range r4,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: storage_(storage)
{
BZPRECONDITION(r0.isAscendingContiguous() &&
r1.isAscendingContiguous() && r2.isAscendingContiguous()
&& r3.isAscendingContiguous() && r4.isAscendingContiguous());
length_[0] = r0.length();
storage_.setBase(0, r0.first());
length_[1] = r1.length();
storage_.setBase(1, r1.first());
length_[2] = r2.length();
storage_.setBase(2, r2.first());
length_[3] = r3.length();
storage_.setBase(3, r3.first());
length_[4] = r4.length();
storage_.setBase(4, r4.first());
setupStorage(4);
}
Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: storage_(storage)
{
BZPRECONDITION(r0.isAscendingContiguous() &&
r1.isAscendingContiguous() && r2.isAscendingContiguous()
&& r3.isAscendingContiguous() && r4.isAscendingContiguous()
&& r5.isAscendingContiguous());
length_[0] = r0.length();
storage_.setBase(0, r0.first());
length_[1] = r1.length();
storage_.setBase(1, r1.first());
length_[2] = r2.length();
storage_.setBase(2, r2.first());
length_[3] = r3.length();
storage_.setBase(3, r3.first());
length_[4] = r4.length();
storage_.setBase(4, r4.first());
length_[5] = r5.length();
storage_.setBase(5, r5.first());
setupStorage(5);
}
Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,
Range r6,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: storage_(storage)
{
BZPRECONDITION(r0.isAscendingContiguous() &&
r1.isAscendingContiguous() && r2.isAscendingContiguous()
&& r3.isAscendingContiguous() && r4.isAscendingContiguous()
&& r5.isAscendingContiguous() && r6.isAscendingContiguous());
length_[0] = r0.length();
storage_.setBase(0, r0.first());
length_[1] = r1.length();
storage_.setBase(1, r1.first());
length_[2] = r2.length();
storage_.setBase(2, r2.first());
length_[3] = r3.length();
storage_.setBase(3, r3.first());
length_[4] = r4.length();
storage_.setBase(4, r4.first());
length_[5] = r5.length();
storage_.setBase(5, r5.first());
length_[6] = r6.length();
storage_.setBase(6, r6.first());
setupStorage(6);
}
Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,
Range r6, Range r7,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: storage_(storage)
{
BZPRECONDITION(r0.isAscendingContiguous() &&
r1.isAscendingContiguous() && r2.isAscendingContiguous()
&& r3.isAscendingContiguous() && r4.isAscendingContiguous()
&& r5.isAscendingContiguous() && r6.isAscendingContiguous()
&& r7.isAscendingContiguous());
length_[0] = r0.length();
storage_.setBase(0, r0.first());
length_[1] = r1.length();
storage_.setBase(1, r1.first());
length_[2] = r2.length();
storage_.setBase(2, r2.first());
length_[3] = r3.length();
storage_.setBase(3, r3.first());
length_[4] = r4.length();
storage_.setBase(4, r4.first());
length_[5] = r5.length();
storage_.setBase(5, r5.first());
length_[6] = r6.length();
storage_.setBase(6, r6.first());
length_[7] = r7.length();
storage_.setBase(7, r7.first());
setupStorage(7);
}
Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,
Range r6, Range r7, Range r8,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: storage_(storage)
{
BZPRECONDITION(r0.isAscendingContiguous() &&
r1.isAscendingContiguous() && r2.isAscendingContiguous()
&& r3.isAscendingContiguous() && r4.isAscendingContiguous()
&& r5.isAscendingContiguous() && r6.isAscendingContiguous()
&& r7.isAscendingContiguous() && r8.isAscendingContiguous());
length_[0] = r0.length();
storage_.setBase(0, r0.first());
length_[1] = r1.length();
storage_.setBase(1, r1.first());
length_[2] = r2.length();
storage_.setBase(2, r2.first());
length_[3] = r3.length();
storage_.setBase(3, r3.first());
length_[4] = r4.length();
storage_.setBase(4, r4.first());
length_[5] = r5.length();
storage_.setBase(5, r5.first());
length_[6] = r6.length();
storage_.setBase(6, r6.first());
length_[7] = r7.length();
storage_.setBase(7, r7.first());
length_[8] = r8.length();
storage_.setBase(8, r8.first());
setupStorage(8);
}
Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,
Range r6, Range r7, Range r8, Range r9,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: storage_(storage)
{
BZPRECONDITION(r0.isAscendingContiguous() &&
r1.isAscendingContiguous() && r2.isAscendingContiguous()
&& r3.isAscendingContiguous() && r4.isAscendingContiguous()
&& r5.isAscendingContiguous() && r6.isAscendingContiguous()
&& r7.isAscendingContiguous() && r8.isAscendingContiguous()
&& r9.isAscendingContiguous());
length_[0] = r0.length();
storage_.setBase(0, r0.first());
length_[1] = r1.length();
storage_.setBase(1, r1.first());
length_[2] = r2.length();
storage_.setBase(2, r2.first());
length_[3] = r3.length();
storage_.setBase(3, r3.first());
length_[4] = r4.length();
storage_.setBase(4, r4.first());
length_[5] = r5.length();
storage_.setBase(5, r5.first());
length_[6] = r6.length();
storage_.setBase(6, r6.first());
length_[7] = r7.length();
storage_.setBase(7, r7.first());
length_[8] = r8.length();
storage_.setBase(8, r8.first());
length_[9] = r9.length();
storage_.setBase(9, r9.first());
setupStorage(9);
}
Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5,
Range r6, Range r7, Range r8, Range r9, Range r10,
GeneralArrayStorage<N_rank> storage = GeneralArrayStorage<N_rank>())
: storage_(storage)
{
BZPRECONDITION(r0.isAscendingContiguous() &&
r1.isAscendingContiguous() && r2.isAscendingContiguous()
&& r3.isAscendingContiguous() && r4.isAscendingContiguous()
&& r5.isAscendingContiguous() && r6.isAscendingContiguous()
&& r7.isAscendingContiguous() && r8.isAscendingContiguous()
&& r9.isAscendingContiguous() && r10.isAscendingContiguous());
length_[0] = r0.length();
storage_.setBase(0, r0.first());
length_[1] = r1.length();
storage_.setBase(1, r1.first());
length_[2] = r2.length();
storage_.setBase(2, r2.first());
length_[3] = r3.length();
storage_.setBase(3, r3.first());
length_[4] = r4.length();
storage_.setBase(4, r4.first());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -