📄 array-impl.h
字号:
Range r4, Range r5, Range r6, Range r7, Range r8, Range r9); void resize(Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7, Range r8, Range r9, Range r10); void resize(Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7, Range r8, Range r9, Range r10, Range r11); void resize(const TinyVector<int,N_rank>&); void resizeAndPreserve(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 Domain<N_rank>&); T_array reverse(int rank); void reverseSelf(int rank); int rows() const { return length_[0]; } void setStorage(GeneralArrayStorage<N_rank>); 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; for (int i=0; i < N_rank; ++i) ub(i) = base(i) + extent(i) - 1; // WAS: ub = base() + extent() - 1; return ub; } int zeroOffset() const { return zeroOffset_; } ////////////////////////////////////////////// // Debugging routines ////////////////////////////////////////////// bool isInRangeForDim(int i, int d) const { return i >= base(d) && (i - base(d)) < length_[d]; } bool isInRange(int i0) const { return i0 >= base(0) && (i0 - base(0)) < length_[0]; } bool isInRange(int i0, int i1) const { return i0 >= base(0) && (i0 - base(0)) < length_[0] && i1 >= base(1) && (i1 - base(1)) < length_[1]; } bool isInRange(int i0, int i1, int i2) const { return i0 >= base(0) && (i0 - base(0)) < length_[0] && i1 >= base(1) && (i1 - base(1)) < length_[1] && i2 >= base(2) && (i2 - base(2)) < length_[2]; } bool isInRange(int i0, int i1, int i2, int i3) const { return i0 >= base(0) && (i0 - base(0)) < length_[0] && i1 >= base(1) && (i1 - base(1)) < length_[1] && i2 >= base(2) && (i2 - base(2)) < length_[2] && i3 >= base(3) && (i3 - base(3)) < length_[3]; } bool isInRange(int i0, int i1, int i2, int i3, int i4) const { return i0 >= base(0) && (i0 - base(0)) < length_[0] && i1 >= base(1) && (i1 - base(1)) < length_[1] && i2 >= base(2) && (i2 - base(2)) < length_[2] && i3 >= base(3) && (i3 - base(3)) < length_[3] && i4 >= base(4) && (i4 - base(4)) < length_[4]; } bool isInRange(int i0, int i1, int i2, int i3, int i4, int i5) const { return i0 >= base(0) && (i0 - base(0)) < length_[0] && i1 >= base(1) && (i1 - base(1)) < length_[1] && i2 >= base(2) && (i2 - base(2)) < length_[2] && i3 >= base(3) && (i3 - base(3)) < length_[3] && i4 >= base(4) && (i4 - base(4)) < length_[4] && i5 >= base(5) && (i5 - base(5)) < length_[5]; } bool isInRange(int i0, int i1, int i2, int i3, int i4, int i5, int i6) const { return i0 >= base(0) && (i0 - base(0)) < length_[0] && i1 >= base(1) && (i1 - base(1)) < length_[1] && i2 >= base(2) && (i2 - base(2)) < length_[2] && i3 >= base(3) && (i3 - base(3)) < length_[3] && i4 >= base(4) && (i4 - base(4)) < length_[4] && i5 >= base(5) && (i5 - base(5)) < length_[5] && i6 >= base(6) && (i6 - base(6)) < length_[6]; } bool isInRange(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7) const { return i0 >= base(0) && (i0 - base(0)) < length_[0] && i1 >= base(1) && (i1 - base(1)) < length_[1] && i2 >= base(2) && (i2 - base(2)) < length_[2] && i3 >= base(3) && (i3 - base(3)) < length_[3] && i4 >= base(4) && (i4 - base(4)) < length_[4] && i5 >= base(5) && (i5 - base(5)) < length_[5] && i6 >= base(6) && (i6 - base(6)) < length_[6] && i7 >= base(7) && (i7 - base(7)) < length_[7]; } bool isInRange(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8) const { return i0 >= base(0) && (i0 - base(0)) < length_[0] && i1 >= base(1) && (i1 - base(1)) < length_[1] && i2 >= base(2) && (i2 - base(2)) < length_[2] && i3 >= base(3) && (i3 - base(3)) < length_[3] && i4 >= base(4) && (i4 - base(4)) < length_[4] && i5 >= base(5) && (i5 - base(5)) < length_[5] && i6 >= base(6) && (i6 - base(6)) < length_[6] && i7 >= base(7) && (i7 - base(7)) < length_[7] && i8 >= base(8) && (i8 - base(8)) < length_[8]; } bool isInRange(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) const { return i0 >= base(0) && (i0 - base(0)) < length_[0] && i1 >= base(1) && (i1 - base(1)) < length_[1] && i2 >= base(2) && (i2 - base(2)) < length_[2] && i3 >= base(3) && (i3 - base(3)) < length_[3] && i4 >= base(4) && (i4 - base(4)) < length_[4] && i5 >= base(5) && (i5 - base(5)) < length_[5] && i6 >= base(6) && (i6 - base(6)) < length_[6] && i7 >= base(7) && (i7 - base(7)) < length_[7] && i8 >= base(8) && (i8 - base(8)) < length_[8] && i9 >= base(9) && (i9 - base(9)) < length_[9]; } 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 i0 >= base(0) && (i0 - base(0)) < length_[0] && i1 >= base(1) && (i1 - base(1)) < length_[1] && i2 >= base(2) && (i2 - base(2)) < length_[2] && i3 >= base(3) && (i3 - base(3)) < length_[3] && i4 >= base(4) && (i4 - base(4)) < length_[4] && i5 >= base(5) && (i5 - base(5)) < length_[5] && i6 >= base(6) && (i6 - base(6)) < length_[6] && i7 >= base(7) && (i7 - base(7)) < length_[7] && i8 >= base(8) && (i8 - base(8)) < length_[8] && i9 >= base(9) && (i9 - base(9)) < length_[9] && i10 >= base(10) && (i10 - base(10)) < length_[10]; } bool isInRange(const T_index& index) const { for (int i=0; i < N_rank; ++i) if (index[i] < base(i) || (index[i] - base(i)) >= length_[i]) return false; return true; } bool assertInRange(const T_index& BZ_DEBUG_PARAM(index)) const { BZPRECHECK(isInRange(index), "Array index out of range: " << index << endl << "Lower bounds: " << storage_.base() << endl << "Length: " << length_ << endl); return true; } bool assertInRange(int BZ_DEBUG_PARAM(i0)) const { BZPRECHECK(isInRange(i0), "Array index out of range: " << i0 << endl << "Lower bounds: " << storage_.base() << endl << "Length: " << length_ << endl); return true; } bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1)) const { BZPRECHECK(isInRange(i0,i1), "Array index out of range: (" << i0 << ", " << i1 << ")" << endl << "Lower bounds: " << storage_.base() << endl << "Length: " << length_ << endl); return true; } bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1), int BZ_DEBUG_PARAM(i2)) const { BZPRECHECK(isInRange(i0,i1,i2), "Array index out of range: (" << i0 << ", " << i1 << ", " << i2 << ")" << endl << "Lower bounds: " << storage_.base() << endl << "Length: " << length_ << endl); return true; } bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1), int BZ_DEBUG_PARAM(i2), int BZ_DEBUG_PARAM(i3)) const { BZPRECHECK(isInRange(i0,i1,i2,i3), "Array index out of range: (" << i0 << ", " << i1 << ", " << i2 << ", " << i3 << ")" << endl << "Lower bounds: " << storage_.base() << endl << "Length: " << length_ << endl); return true; } bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1), int BZ_DEBUG_PARAM(i2), int BZ_DEBUG_PARAM(i3), int BZ_DEBUG_PARAM(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 << "Length: " << length_ << endl); return true; } bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1), int BZ_DEBUG_PARAM(i2), int BZ_DEBUG_PARAM(i3), int BZ_DEBUG_PARAM(i4), int BZ_DEBUG_PARAM(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 << "Length: " << length_ << endl); return true; } bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1), int BZ_DEBUG_PARAM(i2), int BZ_DEBUG_PARAM(i3), int BZ_DEBUG_PARAM(i4), int BZ_DEBUG_PARAM(i5), int BZ_DEBUG_PARAM(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 << "Length: " << length_ << endl); return true; } bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1), int BZ_DEBUG_PARAM(i2), int BZ_DEBUG_PARAM(i3), int BZ_DEBUG_PARAM(i4), int BZ_DEBUG_PARAM(i5), int BZ_DEBUG_PARAM(i6), int BZ_DEBUG_PARAM(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 << "Length: " << length_ << endl); return true; } bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1), int BZ_DEBUG_PARAM(i2), int BZ_DEBUG_PARAM(i3), int BZ_DEBUG_PARAM(i4), int BZ_DEBUG_PARAM(i5), int BZ_DEBUG_PARAM(i6), int BZ_DEBUG_PARAM(i7), int BZ_DEBUG_PARAM(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 << "Length: " << length_ << endl); return true; } bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1), int BZ_DEBUG_PARAM(i2), int BZ_DEBUG_PARAM(i3), int BZ_DEBUG_PARAM(i4), int BZ_DEBUG_PARAM(i5), int BZ_DEBUG_PARAM(i6), int BZ_DEBUG_PARAM(i7), int BZ_DEBUG_PARAM(i8), int BZ_DEBUG_PARAM(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 << "Length: " << length_ << endl); return true; } bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1), int BZ_DEBUG_PARAM(i2), int BZ_DEBUG_PARAM(i3), int BZ_DEBUG_PARAM(i4), int BZ_DEBUG_PARAM(i5), int BZ_DEBUG_PARAM(i6), int BZ_DEBUG_PARAM(i7), int BZ_DEBUG_PARAM(i8), int BZ_DEBUG_PARAM(i9), int BZ_DEBUG_PARAM(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 << "Length: " << length_ << endl); return true; } ////////////////////////////////////////////// // Subscripting operators
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -