📄 array.h
字号:
void resize(const TinyVector<int,N_rank>&);
void resizeAndPreserve(int extent);
void resizeAndPreserve(int extent1,
int extent2);
void resizeAndPreserve(int extent1,
int extent2, int extent3);
void resizeAndPreserve(int extent1,
int extent2, int extent3, int extent4);
void resizeAndPreserve(int extent1,
int extent2, int extent3, int extent4,
int extent5);
void resizeAndPreserve(int extent1,
int extent2, int extent3, int extent4,
int extent5, int extent6);
void resizeAndPreserve(int extent1,
int extent2, int extent3, int extent4,
int extent5, int extent6, int extent7);
void resizeAndPreserve(int extent1,
int extent2, int extent3, int extent4,
int extent5, int extent6, int extent7,
int extent8);
void resizeAndPreserve(int extent1,
int extent2, int extent3, int extent4,
int extent5, int extent6, int extent7,
int extent8, int extent9);
void resizeAndPreserve(int extent1,
int extent2, int extent3, int extent4,
int extent5, int extent6, int extent7,
int extent8, int extent9,
int extent10);
void resizeAndPreserve(int extent1,
int extent2, int extent3, int extent4,
int extent5, int extent6, int extent7,
int extent8, int extent9, int extent10,
int extent11);
// NEEDS_WORK -- resizeAndPreserve(Range,...)
// NEEDS_WORK -- resizeAndPreserve(const TinyVector<int,N_rank>&);
// NEEDS_WORK -- resizeAndPreserve(const Domain<N_rank>&);
T_array reverse(int rank);
void reverseSelf(int rank);
int rows() const
{ return length_[0]; }
void slice(int rank, Range r);
const TinyVector<int, N_rank>& shape() const
{ return length_; }
int size() const
{ return numElements(); }
const TinyVector<int, N_rank>& stride() const
{ return stride_; }
int stride(int rank) const
{ return stride_[rank]; }
int ubound(int rank) const
{ return base(rank) + length_(rank) - 1; }
TinyVector<int, N_rank> ubound() const
{
TinyVector<int, N_rank> ub;
ub = base() + extent() - 1;
return ub;
}
int zeroOffset() const
{ return zeroOffset_; }
//////////////////////////////////////////////
// Debugging routines
//////////////////////////////////////////////
_bz_bool isInRangeForDim(int i, int d) const
{
return unsigned(i - base(d)) < length_[d];
}
_bz_bool isInRange(int i0) const
{
return unsigned(i0 - base(0)) < length_[0];
}
_bz_bool isInRange(int i0, int i1) const
{
return unsigned(i0 - base(0)) < length_[0]
&& unsigned(i1 - base(1)) < length_[1];
}
_bz_bool isInRange(int i0, int i1, int i2) const
{
return unsigned(i0 - base(0)) < length_[0]
&& unsigned(i1 - base(1)) < length_[1]
&& unsigned(i2 - base(2)) < length_[2];
}
_bz_bool isInRange(int i0, int i1, int i2, int i3) const
{
return unsigned(i0 - base(0)) < length_[0]
&& unsigned(i1 - base(1)) < length_[1]
&& unsigned(i2 - base(2)) < length_[2]
&& unsigned(i3 - base(3)) < length_[3];
}
_bz_bool isInRange(int i0, int i1, int i2, int i3, int i4) const
{
return unsigned(i0 - base(0)) < length_[0]
&& unsigned(i1 - base(1)) < length_[1]
&& unsigned(i2 - base(2)) < length_[2]
&& unsigned(i3 - base(3)) < length_[3]
&& unsigned(i4 - base(4)) < length_[4];
}
_bz_bool isInRange(int i0, int i1, int i2, int i3, int i4,
int i5) const
{
return unsigned(i0 - base(0)) < length_[0]
&& unsigned(i1 - base(1)) < length_[1]
&& unsigned(i2 - base(2)) < length_[2]
&& unsigned(i3 - base(3)) < length_[3]
&& unsigned(i4 - base(4)) < length_[4]
&& unsigned(i5 - base(5)) < length_[5];
}
_bz_bool isInRange(int i0, int i1, int i2, int i3, int i4,
int i5, int i6) const
{
return unsigned(i0 - base(0)) < length_[0]
&& unsigned(i1 - base(1)) < length_[1]
&& unsigned(i2 - base(2)) < length_[2]
&& unsigned(i3 - base(3)) < length_[3]
&& unsigned(i4 - base(4)) < length_[4]
&& unsigned(i5 - base(5)) < length_[5]
&& unsigned(i6 - base(6)) < length_[6];
}
_bz_bool isInRange(int i0, int i1, int i2, int i3, int i4,
int i5, int i6, int i7) const
{
return unsigned(i0 - base(0)) < length_[0]
&& unsigned(i1 - base(1)) < length_[1]
&& unsigned(i2 - base(2)) < length_[2]
&& unsigned(i3 - base(3)) < length_[3]
&& unsigned(i4 - base(4)) < length_[4]
&& unsigned(i5 - base(5)) < length_[5]
&& unsigned(i6 - base(6)) < length_[6]
&& unsigned(i7 - base(7)) < length_[7];
}
_bz_bool isInRange(int i0, int i1, int i2, int i3, int i4,
int i5, int i6, int i7, int i8) const
{
return unsigned(i0 - base(0)) < length_[0]
&& unsigned(i1 - base(1)) < length_[1]
&& unsigned(i2 - base(2)) < length_[2]
&& unsigned(i3 - base(3)) < length_[3]
&& unsigned(i4 - base(4)) < length_[4]
&& unsigned(i5 - base(5)) < length_[5]
&& unsigned(i6 - base(6)) < length_[6]
&& unsigned(i7 - base(7)) < length_[7]
&& unsigned(i8 - base(8)) < length_[8];
}
_bz_bool isInRange(int i0, int i1, int i2, int i3, int i4,
int i5, int i6, int i7, int i8, int i9) const
{
return unsigned(i0 - base(0)) < length_[0]
&& unsigned(i1 - base(1)) < length_[1]
&& unsigned(i2 - base(2)) < length_[2]
&& unsigned(i3 - base(3)) < length_[3]
&& unsigned(i4 - base(4)) < length_[4]
&& unsigned(i5 - base(5)) < length_[5]
&& unsigned(i6 - base(6)) < length_[6]
&& unsigned(i7 - base(7)) < length_[7]
&& unsigned(i8 - base(8)) < length_[8]
&& unsigned(i9 - base(9)) < length_[9];
}
_bz_bool isInRange(int i0, int i1, int i2, int i3, int i4,
int i5, int i6, int i7, int i8, int i9, int i10) const
{
return unsigned(i0 - base(0)) < length_[0]
&& unsigned(i1 - base(1)) < length_[1]
&& unsigned(i2 - base(2)) < length_[2]
&& unsigned(i3 - base(3)) < length_[3]
&& unsigned(i4 - base(4)) < length_[4]
&& unsigned(i5 - base(5)) < length_[5]
&& unsigned(i6 - base(6)) < length_[6]
&& unsigned(i7 - base(7)) < length_[7]
&& unsigned(i8 - base(8)) < length_[8]
&& unsigned(i9 - base(9)) < length_[9]
&& unsigned(i10 - base(10)) < length_[10];
}
_bz_bool isInRange(const T_index& index) const
{
for (int i=0; i < N_rank; ++i)
if (unsigned(index[i] - base(i)) >= length_[i])
return _bz_false;
return _bz_true;
}
_bz_bool assertInRange(const T_index& index) const
{
BZPRECHECK(isInRange(index), "Array index out of range: " << index
<< endl << "Lower bounds: " << storage_.base() << endl
<< "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
return _bz_true;
}
_bz_bool assertInRange(int i0) const
{
BZPRECHECK(isInRange(i0), "Array index out of range: " << i0
<< endl << "Lower bounds: " << storage_.base() << endl
<< "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
return _bz_true;
}
_bz_bool assertInRange(int i0, int i1) const
{
BZPRECHECK(isInRange(i0,i1), "Array index out of range: ("
<< i0 << ", " << i1 << ")"
<< endl << "Lower bounds: " << storage_.base() << endl
<< "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
return _bz_true;
}
_bz_bool assertInRange(int i0, int i1, int i2) const
{
BZPRECHECK(isInRange(i0,i1,i2), "Array index out of range: ("
<< i0 << ", " << i1 << ", " << i2 << ")"
<< endl << "Lower bounds: " << storage_.base() << endl
<< "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
return _bz_true;
}
_bz_bool assertInRange(int i0, int i1, int i2, int i3) const
{
BZPRECHECK(isInRange(i0,i1,i2,i3), "Array index out of range: ("
<< i0 << ", " << i1 << ", " << i2 << ", " << i3 << ")"
<< endl << "Lower bounds: " << storage_.base() << endl
<< "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
return _bz_true;
}
_bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4) const
{
BZPRECHECK(isInRange(i0,i1,i2,i3,i4), "Array index out of range: ("
<< i0 << ", " << i1 << ", " << i2 << ", " << i3
<< ", " << i4 << ")"
<< endl << "Lower bounds: " << storage_.base() << endl
<< "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
return _bz_true;
}
_bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4,
int i5) const
{
BZPRECHECK(isInRange(i0,i1,i2,i3,i4,i5), "Array index out of range: ("
<< i0 << ", " << i1 << ", " << i2 << ", " << i3
<< ", " << i4 << ", " << i5 << ")"
<< endl << "Lower bounds: " << storage_.base() << endl
<< "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
return _bz_true;
}
_bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4,
int i5, int i6) const
{
BZPRECHECK(isInRange(i0,i1,i2,i3,i4,i5,i6),
"Array index out of range: ("
<< i0 << ", " << i1 << ", " << i2 << ", " << i3
<< ", " << i4 << ", " << i5 << ", " << i6 << ")"
<< endl << "Lower bounds: " << storage_.base() << endl
<< "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
return _bz_true;
}
_bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4,
int i5, int i6, int i7) const
{
BZPRECHECK(isInRange(i0,i1,i2,i3,i4,i5,i6,i7),
"Array index out of range: ("
<< i0 << ", " << i1 << ", " << i2 << ", " << i3
<< ", " << i4 << ", " << i5 << ", " << i6 << ", " << i7 << ")"
<< endl << "Lower bounds: " << storage_.base() << endl
<< "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
return _bz_true;
}
_bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4,
int i5, int i6, int i7, int i8) const
{
BZPRECHECK(isInRange(i0,i1,i2,i3,i4,i5,i6,i7,i8),
"Array index out of range: ("
<< i0 << ", " << i1 << ", " << i2 << ", " << i3
<< ", " << i4 << ", " << i5 << ", " << i6 << ", " << i7
<< ", " << i8 << ")"
<< endl << "Lower bounds: " << storage_.base() << endl
<< "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
return _bz_true;
}
_bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4,
int i5, int i6, int i7, int i8, int i9) const
{
BZPRECHECK(isInRange(i0,i1,i2,i3,i4,i5,i6,i7,i8,i9),
"Array index out of range: ("
<< i0 << ", " << i1 << ", " << i2 << ", " << i3
<< ", " << i4 << ", " << i5 << ", " << i6 << ", " << i7
<< ", " << i8 << ", " << i9 << ")"
<< endl << "Lower bounds: " << storage_.base() << endl
<< "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
return _bz_true;
}
_bz_bool assertInRange(int i0, int i1, int i2, int i3, int i4,
int i5, int i6, int i7, int i8, int i9, int i10) const
{
BZPRECHECK(isInRange(i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10),
"Array index out of range: ("
<< i0 << ", " << i1 << ", " << i2 << ", " << i3
<< ", " << i4 << ", " << i5 << ", " << i6 << ", " << i7
<< ", " << i8 << ", " << i9 << ", " << i10 << ")"
<< endl << "Lower bounds: " << storage_.base() << endl
<< "Upper bounds: " << (storage_.base() + length_ - 1) << endl);
return _bz_true;
}
//////////////////////////////////////////////
// Subscripting operators
//////////////////////////////////////////////
template<int N_rank2>
T_numtype operator()(const TinyVector<int,N_rank2>& index) const
{
assertInRange(index);
return data_[dot(index, stride_)];
}
template<int N_rank2>
T_numtype& _bz_restrict operator()(const TinyVector<int,N_rank2>& index)
{
assertInRange(index);
return data_[dot(index, stride_)];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -