?? interlace.cc
字號:
Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2){#ifdef BZ_INTERLACE_ARRAYS interlaceArrays(shape, a1, a2);#else a1.resize(shape); a2.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape, Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2, Array<T_numtype,N_rank>& a3){#ifdef BZ_INTERLACE_ARRAYS interlaceArrays(shape, a1, a2, a3);#else a1.resize(shape); a2.resize(shape); a3.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape, Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2, Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4){#ifdef BZ_INTERLACE_ARRAYS interlaceArrays(shape, a1, a2, a3, a4);#else a1.resize(shape); a2.resize(shape); a3.resize(shape); a4.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape, Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2, Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4, Array<T_numtype,N_rank>& a5){#ifdef BZ_INTERLACE_ARRAYS interlaceArrays(shape, a1, a2, a3, a4, a5);#else a1.resize(shape); a2.resize(shape); a3.resize(shape); a4.resize(shape); a5.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape, Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2, Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4, Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6){#ifdef BZ_INTERLACE_ARRAYS interlaceArrays(shape, a1, a2, a3, a4, a5, a6);#else a1.resize(shape); a2.resize(shape); a3.resize(shape); a4.resize(shape); a5.resize(shape); a6.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape, Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2, Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4, Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6, Array<T_numtype,N_rank>& a7){#ifdef BZ_INTERLACE_ARRAYS interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7);#else a1.resize(shape); a2.resize(shape); a3.resize(shape); a4.resize(shape); a5.resize(shape); a6.resize(shape); a7.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape, Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2, Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4, Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6, Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8){#ifdef BZ_INTERLACE_ARRAYS interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7, a8);#else a1.resize(shape); a2.resize(shape); a3.resize(shape); a4.resize(shape); a5.resize(shape); a6.resize(shape); a7.resize(shape); a8.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape, Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2, Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4, Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6, Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8, Array<T_numtype,N_rank>& a9){#ifdef BZ_INTERLACE_ARRAYS interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7, a8, a9);#else a1.resize(shape); a2.resize(shape); a3.resize(shape); a4.resize(shape); a5.resize(shape); a6.resize(shape); a7.resize(shape); a8.resize(shape); a9.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape, Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2, Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4, Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6, Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8, Array<T_numtype,N_rank>& a9, Array<T_numtype,N_rank>& a10){#ifdef BZ_INTERLACE_ARRAYS interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);#else a1.resize(shape); a2.resize(shape); a3.resize(shape); a4.resize(shape); a5.resize(shape); a6.resize(shape); a7.resize(shape); a8.resize(shape); a9.resize(shape); a10.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape, Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2, Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4, Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6, Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8, Array<T_numtype,N_rank>& a9, Array<T_numtype,N_rank>& a10, Array<T_numtype,N_rank>& a11){#ifdef BZ_INTERLACE_ARRAYS interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);#else a1.resize(shape); a2.resize(shape); a3.resize(shape); a4.resize(shape); a5.resize(shape); a6.resize(shape); a7.resize(shape); a8.resize(shape); a9.resize(shape); a10.resize(shape); a11.resize(shape);#endif}// NEEDS_WORK -- allocateArrays for TinyVector<Range,N_rank>// This constructor is used to create interlaced arrays.template<typename T_numtype, int N_rank>Array<T_numtype,N_rank>::Array(const TinyVector<int,N_rank-1>& shape, int lastExtent, const GeneralArrayStorage<N_rank>& storage) : storage_(storage){ // Create an array with the given shape, plus an extra dimension // for the number of arrays being allocated. This extra dimension // must have minor storage order. if (ordering(0) == 0) { // Column major storage order (or something like it) length_[0] = lastExtent; storage_.setBase(0,0); for (int i=1; i < N_rank; ++i) length_[i] = shape[i-1]; } else if (ordering(0) == N_rank-1) { // Row major storage order (or something like it) for (int i=0; i < N_rank-1; ++i) length_[i] = shape[i]; length_[N_rank-1] = lastExtent; storage_.setBase(N_rank-1, 0); } else { BZPRECHECK(0, "Used allocateArrays() with a peculiar storage format"); } setupStorage(N_rank-1);}// NEEDS_WORK -- see note about TinyVector<Range,N> in <blitz/arrayshape.h>#if 0template<typename T_numtype, int N_rank>Array<T_numtype,N_rank>::Array(const TinyVector<Range,N_rank-1>& shape, int lastExtent, const GeneralArrayStorage<N_rank>& storage) : storage_(storage){#ifdef BZ_DEBUG for (int i=0; i < N_rank; ++i) BZPRECHECK(shape[i].isAscendingContiguous(), "In call to allocateArrays(), a Range object is not ascending" << endl << "contiguous: " << shape[i] << endl);#endif if (ordering(0) == 0) { // Column major storage order (or something like it) length_[0] = lastExtent; storage_.setBase(0,0); for (int i=1; i < N_rank; ++i) { length_[i] = shape[i-1].length(); storage_.setBase(i, shape[i-1].first()); } } else if (ordering(0) == N_rank-1) { // Row major storage order (or something like it) for (int i=0; i < N_rank-1; ++i) { length_[i] = shape[i]; storage_.setBase(i, shape[i].first()); } length_[N_rank-1] = lastExtent; storage_.setBase(N_rank-1, 0); } else { BZPRECHECK(0, "Used allocateArrays() with a peculiar storage format"); } setupStorage(N_rank-1);}#endifBZ_NAMESPACE_END#endif // BZ_ARRAYINTER_CC
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -