54 #include <blitz/array/slice.h>
55 #include <blitz/array/map.h>
56 #include <blitz/array/multi.h>
57 #include <blitz/array/domain.h>
58 #include <blitz/array/storage.h>
60 #ifdef BZ_HAVE_BOOST_SERIALIZATION
61 #include <boost/serialization/serialization.hpp>
62 #include <boost/serialization/base_object.hpp>
72 template<
typename T_numtype,
int N_rank>
75 template<
typename T_numtype,
int N_rank>
78 template<
typename T_numtype,
int N_rank>
81 template<
typename P_expr>
84 template<
typename T_array,
typename T_index>
87 template <
typename P_numtype,
int N_rank>
90 template <
typename P_numtype,
int N_rank>
105 template<
typename P_numtype,
int N_rank>
107 #ifdef BZ_NEW_EXPRESSION_TEMPLATES
108 ,
public ETBase<Array<P_numtype,N_rank> >
149 #if defined(BZ_FORTRAN_ARRAY)
151 #elif defined(BZ_COLUMN_MAJOR_ARRAY)
168 template<
typename T_expr>
198 BZPRECONDITION(N_rank >= 2);
199 TAU_TYPE_STRING(p1,
"Array<T,N>::Array() [T="
200 + CT(T_numtype) +
",N=" + CT(N_rank) +
"]");
201 TAU_PROFILE(p1,
"void (int,int)", TAU_BLITZ);
208 Array(
int length0,
int length1,
int length2,
212 BZPRECONDITION(N_rank >= 3);
219 Array(
int length0,
int length1,
int length2,
int length3,
223 BZPRECONDITION(N_rank >= 4);
231 Array(
int length0,
int length1,
int length2,
int length3,
int length4,
235 BZPRECONDITION(N_rank >= 5);
244 Array(
int length0,
int length1,
int length2,
int length3,
int length4,
249 BZPRECONDITION(N_rank >= 6);
259 Array(
int length0,
int length1,
int length2,
int length3,
int length4,
260 int length5,
int length6,
264 BZPRECONDITION(N_rank >= 7);
275 Array(
int length0,
int length1,
int length2,
int length3,
int length4,
276 int length5,
int length6,
int length7,
280 BZPRECONDITION(N_rank >= 8);
292 Array(
int length0,
int length1,
int length2,
int length3,
int length4,
293 int length5,
int length6,
int length7,
int length8,
297 BZPRECONDITION(N_rank >= 9);
310 Array(
int length0,
int length1,
int length2,
int length3,
int length4,
311 int length5,
int length6,
int length7,
int length8,
int length9,
315 BZPRECONDITION(N_rank >= 10);
329 Array(
int length0,
int length1,
int length2,
int length3,
int length4,
330 int length5,
int length6,
int length7,
int length8,
int length9,
335 BZPRECONDITION(N_rank >= 11);
355 GeneralArrayStorage<N_rank> storage =
361 BZPRECONDITION(dataFirst != 0);
381 GeneralArrayStorage<N_rank> storage =
387 BZPRECONDITION(dataFirst != 0);
404 GeneralArrayStorage<N_rank> storage =
410 BZPRECONDITION(dataFirst != 0);
432 GeneralArrayStorage<N_rank> storage =
438 BZPRECONDITION(dataFirst != 0);
470 const GeneralArrayStorage<N_rank>& storage
748 length_[10] = r10.
length();
758 #ifdef BZ_NEW_EXPRESSION_TEMPLATES
774 int lastExtent,
const GeneralArrayStorage<N_rank>& storage);
841 constructSubarray(array, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9);
848 constructSubarray(array, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10);
859 const StridedDomain<N_rank>& subdomain)
869 template<
int N_rank2,
typename R0,
typename R1,
typename R2,
typename R3,
typename R4,
870 typename R5,
typename R6,
typename R7,
typename R8,
typename R9,
typename R10>
872 R3 r3, R4 r4, R5 r5, R6 r6, R7 r7, R8 r8, R9 r9, R10 r10)
874 constructSlice(array, r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10);
897 template<
typename P_numtype2>
899 int numComponents)
const
908 T_array
copy()
const;
945 for (
int i=0;
i < N_rank; ++
i)
972 const_iterator
end()
const
981 template<
typename P_numtype2>
983 int numComponents)
const;
992 {
return storage_.ordering(rank) == N_rank-1; }
994 {
return storage_.ordering(rank) != N_rank-1; }
996 {
return storage_.isRankStoredAscending(rank); }
1001 {
return base(rank); }
1024 {
return storage_.ordering(storageRankIndex); }
1030 int r3=0,
int r4=0,
int r5=0,
int r6=0,
int r7=0,
int r8=0,
int
1032 T_array
transpose(
int r0,
int r1,
int r2=0,
1033 int r3=0,
int r4=0,
int r5=0,
int r6=0,
int r7=0,
int r8=0,
int
1034 r9=0,
int r10=0)
const;
1048 void resize(
int extent1,
int extent2);
1049 void resize(
int extent1,
int extent2,
1051 void resize(
int extent1,
int extent2,
1052 int extent3,
int extent4);
1053 void resize(
int extent1,
int extent2,
1054 int extent3,
int extent4,
int extent5);
1055 void resize(
int extent1,
int extent2,
1056 int extent3,
int extent4,
int extent5,
1058 void resize(
int extent1,
int extent2,
1059 int extent3,
int extent4,
int extent5,
1060 int extent6,
int extent7);
1061 void resize(
int extent1,
int extent2,
1062 int extent3,
int extent4,
int extent5,
1063 int extent6,
int extent7,
int extent8);
1064 void resize(
int extent1,
int extent2,
1065 int extent3,
int extent4,
int extent5,
1066 int extent6,
int extent7,
int extent8,
1068 void resize(
int extent1,
int extent2,
1069 int extent3,
int extent4,
int extent5,
1070 int extent6,
int extent7,
int extent8,
1071 int extent9,
int extent10);
1072 void resize(
int extent1,
int extent2,
1073 int extent3,
int extent4,
int extent5,
1074 int extent6,
int extent7,
int extent8,
1075 int extent9,
int extent10,
1115 int extent2,
int extent3);
1117 int extent2,
int extent3,
int extent4);
1119 int extent2,
int extent3,
int extent4,
1122 int extent2,
int extent3,
int extent4,
1123 int extent5,
int extent6);
1125 int extent2,
int extent3,
int extent4,
1126 int extent5,
int extent6,
int extent7);
1128 int extent2,
int extent3,
int extent4,
1129 int extent5,
int extent6,
int extent7,
1132 int extent2,
int extent3,
int extent4,
1133 int extent5,
int extent6,
int extent7,
1134 int extent8,
int extent9);
1136 int extent2,
int extent3,
int extent4,
1137 int extent5,
int extent6,
int extent7,
1138 int extent8,
int extent9,
1141 int extent2,
int extent3,
int extent4,
1142 int extent5,
int extent6,
int extent7,
1143 int extent8,
int extent9,
int extent10,
1155 void setStorage(GeneralArrayStorage<N_rank>);
1188 for (
int i=0;
i < N_rank; ++
i)
1231 bool isInRange(
int i0,
int i1,
int i2,
int i3,
int i4)
const {
1239 bool isInRange(
int i0,
int i1,
int i2,
int i3,
int i4,
int i5)
const {
1248 bool isInRange(
int i0,
int i1,
int i2,
int i3,
int i4,
int i5,
int i6)
const {
1259 int i5,
int i6,
int i7)
const {
1271 int i5,
int i6,
int i7,
int i8)
const {
1284 int i5,
int i6,
int i7,
int i8,
int i9)
const {
1298 int i5,
int i6,
int i7,
int i8,
int i9,
int i10)
const {
1313 for (
int i=0;
i < N_rank; ++
i)
1321 BZPRECHECK(
isInRange(index),
"Array index out of range: " << index
1322 << endl <<
"Lower bounds: " <<
storage_.base() << endl
1323 <<
"Length: " <<
length_ << endl);
1328 BZPRECHECK(
isInRange(i0),
"Array index out of range: " << i0
1329 << endl <<
"Lower bounds: " <<
storage_.base() << endl
1330 <<
"Length: " <<
length_ << endl);
1335 BZPRECHECK(
isInRange(i0,i1),
"Array index out of range: ("
1336 << i0 <<
", " << i1 <<
")"
1337 << endl <<
"Lower bounds: " <<
storage_.base() << endl
1338 <<
"Length: " <<
length_ << endl);
1343 int BZ_DEBUG_PARAM(i2))
const
1345 BZPRECHECK(
isInRange(i0,i1,i2),
"Array index out of range: ("
1346 << i0 <<
", " << i1 <<
", " << i2 <<
")"
1347 << endl <<
"Lower bounds: " <<
storage_.base() << endl
1348 <<
"Length: " <<
length_ << endl);
1353 int BZ_DEBUG_PARAM(i2),
int BZ_DEBUG_PARAM(i3))
const
1355 BZPRECHECK(
isInRange(i0,i1,i2,i3),
"Array index out of range: ("
1356 << i0 <<
", " << i1 <<
", " << i2 <<
", " << i3 <<
")"
1357 << endl <<
"Lower bounds: " <<
storage_.base() << endl
1358 <<
"Length: " <<
length_ << endl);
1363 int BZ_DEBUG_PARAM(i2),
int BZ_DEBUG_PARAM(i3),
1364 int BZ_DEBUG_PARAM(i4))
const
1366 BZPRECHECK(
isInRange(i0,i1,i2,i3,i4),
"Array index out of range: ("
1367 << i0 <<
", " << i1 <<
", " << i2 <<
", " << i3
1368 <<
", " << i4 <<
")"
1369 << endl <<
"Lower bounds: " <<
storage_.base() << endl
1370 <<
"Length: " <<
length_ << endl);
1375 int BZ_DEBUG_PARAM(i2),
int BZ_DEBUG_PARAM(i3),
int BZ_DEBUG_PARAM(i4),
1376 int BZ_DEBUG_PARAM(i5))
const
1378 BZPRECHECK(
isInRange(i0,i1,i2,i3,i4,i5),
"Array index out of range: ("
1379 << i0 <<
", " << i1 <<
", " << i2 <<
", " << i3
1380 <<
", " << i4 <<
", " << i5 <<
")"
1381 << endl <<
"Lower bounds: " <<
storage_.base() << endl
1382 <<
"Length: " <<
length_ << endl);
1387 int BZ_DEBUG_PARAM(i2),
int BZ_DEBUG_PARAM(i3),
int BZ_DEBUG_PARAM(i4),
1388 int BZ_DEBUG_PARAM(i5),
int BZ_DEBUG_PARAM(i6))
const
1390 BZPRECHECK(
isInRange(i0,i1,i2,i3,i4,i5,i6),
1391 "Array index out of range: ("
1392 << i0 <<
", " << i1 <<
", " << i2 <<
", " << i3
1393 <<
", " << i4 <<
", " << i5 <<
", " << i6 <<
")"
1394 << endl <<
"Lower bounds: " <<
storage_.base() << endl
1395 <<
"Length: " <<
length_ << endl);
1400 int BZ_DEBUG_PARAM(i2),
int BZ_DEBUG_PARAM(i3),
int BZ_DEBUG_PARAM(i4),
1401 int BZ_DEBUG_PARAM(i5),
int BZ_DEBUG_PARAM(i6),
1402 int BZ_DEBUG_PARAM(i7))
const
1404 BZPRECHECK(
isInRange(i0,i1,i2,i3,i4,i5,i6,i7),
1405 "Array index out of range: ("
1406 << i0 <<
", " << i1 <<
", " << i2 <<
", " << i3
1407 <<
", " << i4 <<
", " << i5 <<
", " << i6 <<
", " << i7 <<
")"
1408 << endl <<
"Lower bounds: " <<
storage_.base() << endl
1409 <<
"Length: " <<
length_ << endl);
1414 int BZ_DEBUG_PARAM(i2),
int BZ_DEBUG_PARAM(i3),
int BZ_DEBUG_PARAM(i4),
1415 int BZ_DEBUG_PARAM(i5),
int BZ_DEBUG_PARAM(i6),
int BZ_DEBUG_PARAM(i7),
1416 int BZ_DEBUG_PARAM(i8))
const
1418 BZPRECHECK(
isInRange(i0,i1,i2,i3,i4,i5,i6,i7,i8),
1419 "Array index out of range: ("
1420 << i0 <<
", " << i1 <<
", " << i2 <<
", " << i3
1421 <<
", " << i4 <<
", " << i5 <<
", " << i6 <<
", " << i7
1422 <<
", " << i8 <<
")"
1423 << endl <<
"Lower bounds: " <<
storage_.base() << endl
1424 <<
"Length: " <<
length_ << endl);
1429 int BZ_DEBUG_PARAM(i2),
int BZ_DEBUG_PARAM(i3),
int BZ_DEBUG_PARAM(i4),
1430 int BZ_DEBUG_PARAM(i5),
int BZ_DEBUG_PARAM(i6),
int BZ_DEBUG_PARAM(i7),
1431 int BZ_DEBUG_PARAM(i8),
int BZ_DEBUG_PARAM(i9))
const
1433 BZPRECHECK(
isInRange(i0,i1,i2,i3,i4,i5,i6,i7,i8,i9),
1434 "Array index out of range: ("
1435 << i0 <<
", " << i1 <<
", " << i2 <<
", " << i3
1436 <<
", " << i4 <<
", " << i5 <<
", " << i6 <<
", " << i7
1437 <<
", " << i8 <<
", " << i9 <<
")"
1438 << endl <<
"Lower bounds: " <<
storage_.base() << endl
1439 <<
"Length: " <<
length_ << endl);
1444 int BZ_DEBUG_PARAM(i2),
int BZ_DEBUG_PARAM(i3),
int BZ_DEBUG_PARAM(i4),
1445 int BZ_DEBUG_PARAM(i5),
int BZ_DEBUG_PARAM(i6),
int BZ_DEBUG_PARAM(i7),
1446 int BZ_DEBUG_PARAM(i8),
int BZ_DEBUG_PARAM(i9),
1447 int BZ_DEBUG_PARAM(i10))
const
1449 BZPRECHECK(
isInRange(i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10),
1450 "Array index out of range: ("
1451 << i0 <<
", " << i1 <<
", " << i2 <<
", " << i3
1452 <<
", " << i4 <<
", " << i5 <<
", " << i6 <<
", " << i7
1453 <<
", " << i8 <<
", " << i9 <<
", " << i10 <<
")"
1454 << endl <<
"Lower bounds: " <<
storage_.base() << endl
1455 <<
"Length: " <<
length_ << endl);
1463 template<
int N_rank2>
1470 template<
int N_rank2>
1558 index[4], index[5]);
1568 index[4], index[5]);
1578 index[4], index[5], index[6]);
1589 index[4], index[5], index[6]);
1600 index[4], index[5], index[6], index[7]);
1611 index[4], index[5], index[6], index[7]);
1622 index[4], index[5], index[6], index[7], index[8]);
1634 index[4], index[5], index[6], index[7], index[8]);
1646 index[4], index[5], index[6], index[7], index[8], index[9]);
1658 index[4], index[5], index[6], index[7], index[8], index[9]);
1670 index[4], index[5], index[6], index[7], index[8], index[9],
1684 index[4], index[5], index[6], index[7], index[8], index[9],
1764 int i4,
int i5)
const
1782 int i4,
int i5,
int i6)
const
1791 int i4,
int i5,
int i6)
1800 int i4,
int i5,
int i6,
int i7)
const
1809 int i4,
int i5,
int i6,
int i7)
1818 int i4,
int i5,
int i6,
int i7,
int i8)
const
1828 int i4,
int i5,
int i6,
int i7,
int i8)
1838 int i4,
int i5,
int i6,
int i7,
int i8,
int i9)
const
1848 int i4,
int i5,
int i6,
int i7,
int i8,
int i9)
1858 int i4,
int i5,
int i6,
int i7,
int i8,
int i9,
int i10)
const
1869 int i4,
int i5,
int i6,
int i7,
int i8,
int i9,
int i10)
1885 {
return const_cast<T_array&
>(*this); }
1950 return T_array(
noConst(), r0, r1, r2, r3, r4, r5, r6, r7, r8, r9);
1956 return T_array(
noConst(), r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10);
1982 #ifdef BZ_HAVE_PARTIAL_ORDERING
1984 template<
typename T1,
typename T2>
1985 typename SliceInfo<T_numtype,T1,T2>::T_slice
1988 typedef typename SliceInfo<T_numtype,T1,T2>::T_slice
slice;
1989 return slice(
noConst(), r1, r2, nilArraySection(), nilArraySection(), nilArraySection(),
1990 nilArraySection(), nilArraySection(), nilArraySection(),
1991 nilArraySection(), nilArraySection(), nilArraySection());
1994 template<
typename T1,
typename T2,
typename T3>
1995 typename SliceInfo<T_numtype,T1,T2,T3>::T_slice
1998 typedef typename SliceInfo<T_numtype,T1,T2,T3>::T_slice
slice;
1999 return slice(
noConst(), r1, r2, r3, nilArraySection(), nilArraySection(), nilArraySection(),
2000 nilArraySection(), nilArraySection(), nilArraySection(),
2001 nilArraySection(), nilArraySection());
2004 template<
typename T1,
typename T2,
typename T3,
typename T4>
2005 typename SliceInfo<T_numtype,T1,T2,T3,T4>::T_slice
2008 typedef typename SliceInfo<T_numtype,T1,T2,T3,T4>::T_slice
slice;
2009 return slice(
noConst(), r1, r2, r3, r4, nilArraySection(), nilArraySection(),
2010 nilArraySection(), nilArraySection(), nilArraySection(),
2011 nilArraySection(), nilArraySection());
2014 template<
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
2015 typename SliceInfo<T_numtype,T1,T2,T3,T4,T5>::T_slice
2016 operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5)
const
2018 typedef typename SliceInfo<T_numtype,T1,T2,T3,T4,T5>::T_slice
slice;
2019 return slice(
noConst(), r1, r2, r3, r4, r5, nilArraySection(),
2020 nilArraySection(), nilArraySection(), nilArraySection(),
2021 nilArraySection(), nilArraySection());
2024 template<
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6>
2025 typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6>::T_slice
2026 operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5, T6 r6)
const
2028 typedef typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6>::T_slice
slice;
2029 return slice(
noConst(), r1, r2, r3, r4, r5, r6, nilArraySection(), nilArraySection(), nilArraySection(),
2030 nilArraySection(), nilArraySection());
2033 template<
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
2035 typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7>::T_slice
2036 operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5, T6 r6, T7 r7)
const
2038 typedef typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7>::T_slice
slice;
2039 return slice(
noConst(), r1, r2, r3, r4, r5, r6, r7, nilArraySection(), nilArraySection(),
2040 nilArraySection(), nilArraySection());
2043 template<
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
2044 typename T7,
typename T8>
2045 typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8>::T_slice
2046 operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5, T6 r6, T7 r7, T8 r8)
const
2048 typedef typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8>::T_slice
slice;
2049 return slice(
noConst(), r1, r2, r3, r4, r5, r6, r7, r8,
2050 nilArraySection(), nilArraySection(), nilArraySection());
2053 template<
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
2054 typename T7,
typename T8,
typename T9>
2055 typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8,T9>::T_slice
2056 operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5, T6 r6, T7 r7, T8 r8, T9 r9)
const
2058 typedef typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8,T9>::T_slice
slice;
2059 return slice(
noConst(), r1, r2, r3, r4, r5, r6, r7, r8, r9, nilArraySection(), nilArraySection());
2062 template<
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
2063 typename T7,
typename T8,
typename T9,
typename T10>
2064 typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>::T_slice
2065 operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5, T6 r6, T7 r7, T8 r8, T9 r9, T10 r10)
const
2067 typedef typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>::T_slice
slice;
2068 return slice(
noConst(), r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, nilArraySection());
2071 template<
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
typename T6,
2072 typename T7,
typename T8,
typename T9,
typename T10,
typename T11>
2073 typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::T_slice
2074 operator()(T1 r1, T2 r2, T3 r3, T4 r4, T5 r5, T6 r6, T7 r7, T8 r8, T9 r9, T10 r10, T11 r11)
const
2076 typedef typename SliceInfo<T_numtype,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::T_slice
slice;
2077 return slice(
noConst(), r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11);
2080 #endif // BZ_HAVE_PARTIAL_ORDERING
2094 _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0> >
2097 return _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0> >
2101 template<
int N0,
int N1>
2102 _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0, N1> >
2105 return _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0,
2109 template<
int N0,
int N1,
int N2>
2110 _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0, N1, N2> >
2114 return _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0,
2118 template<
int N0,
int N1,
int N2,
int N3>
2119 _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0, N1, N2, N3> >
2123 return _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0,
2127 template<
int N0,
int N1,
int N2,
int N3,
int N4>
2128 _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0, N1, N2, N3, N4> >
2133 return _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0,
2137 template<
int N0,
int N1,
int N2,
int N3,
int N4,
int N5>
2138 _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0, N1, N2, N3,
2144 return _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0,
2145 N1, N2, N3, N4, N5> >(
noConst());
2148 template<
int N0,
int N1,
int N2,
int N3,
int N4,
int N5,
int N6>
2149 _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0, N1, N2, N3,
2155 return _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0,
2156 N1, N2, N3, N4, N5, N6> >(
noConst());
2159 template<
int N0,
int N1,
int N2,
int N3,
int N4,
int N5,
int N6,
2161 _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0, N1, N2, N3,
2168 return _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0,
2169 N1, N2, N3, N4, N5, N6, N7> >(
noConst());
2172 template<
int N0,
int N1,
int N2,
int N3,
int N4,
int N5,
int N6,
2174 _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0, N1, N2, N3,
2175 N4, N5, N6, N7, N8> >
2181 return _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0,
2182 N1, N2, N3, N4, N5, N6, N7, N8> >(
noConst());
2185 template<
int N0,
int N1,
int N2,
int N3,
int N4,
int N5,
int N6,
2186 int N7,
int N8,
int N9>
2187 _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0, N1, N2, N3,
2188 N4, N5, N6, N7, N8, N9> >
2194 return _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0,
2195 N1, N2, N3, N4, N5, N6, N7, N8, N9> >(
noConst());
2198 template<
int N0,
int N1,
int N2,
int N3,
int N4,
int N5,
int N6,
2199 int N7,
int N8,
int N9,
int N10>
2200 _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0, N1, N2, N3,
2201 N4, N5, N6, N7, N8, N9, N10> >
2208 return _bz_ArrayExpr<ArrayIndexMapping<typename asExpr<T_array >::T_expr, N0,
2209 N1, N2, N3, N4, N5, N6, N7, N8, N9, N10> >(
noConst());
2223 typedef typename multicomponent_traits<T_numtype>::T_element T_compType;
2226 multicomponent_traits<T_numtype>::numComponents);
2231 typedef typename multicomponent_traits<T_numtype>::T_element T_compType;
2234 multicomponent_traits<T_numtype>::numComponents);
2239 return operator[](static_cast<unsigned>(component));
2244 return operator[](static_cast<unsigned>(component));
2251 template<
typename T_indexContainer>
2256 const_cast<T_indexContainer&
>(index));
2281 #ifdef BZ_NEW_EXPRESSION_TEMPLATES
2325 template<
typename T_expr> T_array& operator<<=(const ETBase<T_expr>&);
2342 template<
typename P_numtype2>
2344 template<
typename P_numtype2>
2346 template<
typename P_numtype2>
2348 template<
typename P_numtype2>
2350 template<
typename P_numtype2>
2352 template<
typename P_numtype2>
2354 template<
typename P_numtype2>
2356 template<
typename P_numtype2>
2358 template<
typename P_numtype2>
2360 template<
typename P_numtype2>
2362 template<
typename P_numtype2>
2363 T_array& operator<<=(const Array<P_numtype2,N_rank>&);
2366 template<
typename T_expr>
2368 template<
typename T_expr>
2370 template<
typename T_expr>
2372 template<
typename T_expr>
2374 template<
typename T_expr>
2376 template<
typename T_expr>
2378 template<
typename T_expr>
2380 template<
typename T_expr>
2382 template<
typename T_expr>
2384 template<
typename T_expr>
2386 template<
typename T_expr>
2387 inline T_array& operator<<=(BZ_ETPARM(_bz_ArrayExpr<T_expr>) expr);
2399 #ifdef BZ_DEBUG_TRAVERSE
2400 BZ_DEBUG_MESSAGE(
"stride(" << innerRank <<
")=" <<
stride(innerRank)
2401 <<
", extent()=" <<
extent(innerRank) <<
", stride(outerRank)="
2417 const StridedDomain<N_rank>&);
2445 template<
int N_rank2,
typename R0,
typename R1,
typename R2,
typename R3,
typename R4,
2446 typename R5,
typename R6,
typename R7,
typename R8,
typename R9,
typename R10>
2448 R3 r3, R4 r4, R5 r5, R6 r6, R7 r7, R8 r8, R9 r9, R10 r10);
2450 template<
int N_rank2>
2454 template<
int N_rank2>
2458 template<
int N_rank2>
2463 void doTranspose(
int destRank,
int sourceRank, T_array& array);
2467 #ifdef BZ_HAVE_BOOST_SERIALIZATION
2468 friend class boost::serialization::access;
2470 template<
class T_arch>
2471 void serialize(T_arch& ar,
const unsigned int version) {
2472 ar & boost::serialization::base_object<MemoryBlockReference<P_numtype> >(*this);
2513 template<
typename T_numtype>
2514 ostream& operator<<(ostream&, const Array<T_numtype,1>&);
2516 template<
typename T_numtype,
int N_rank>
2517 ostream& operator<<(ostream&, const Array<T_numtype,N_rank>&);
2519 template<
typename T_numtype,
int N_rank>
2522 template <
typename P_numtype,
int N_rank>
2529 template <
typename P_expr>
2536 template <
typename P_numtype,
int N_rank>
2539 indices.resize(exprVals.
size());
2542 for (it = exprVals.
begin(); it != end; ++it)
2544 indices(j++) = it.position();
2546 indices.resizeAndPreserve(j);
2559 #include <blitz/array.cc>
2560 #include <blitz/tinyvec2.cc>
2563 #endif // BZ_ARRAY_H
int base(int rank) const
Definition: array-impl.h:884
Array(Array< T_numtype, N_rank > &array, Range r0, Range r1, Range r2, Range r3, Range r4, Range r5)
Definition: array-impl.h:814
Array< P_numtype2, N_rank > extractComponent(P_numtype2, int compNum, int numComponents) const
bool isAscendingContiguous() const
Definition: range.h:253
_bz_global blitz::IndexPlaceholder< 9 > r
Definition: indexexpr.h:265
istream & operator>>(istream &is, Array< T_numtype, N_rank > &x)
Definition: array-impl.h:73
void reverseSelf(int rank)
Array(int length0, int length1, int length2, int length3, int length4, int length5, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:244
T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7, Range r8) const
Definition: array-impl.h:1941
GeneralArrayStorage< N_rank > T_default_storage
Set default storage order.
Definition: array-impl.h:154
sizeType size() const
Definition: array-impl.h:1162
T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5) const
Definition: array-impl.h:1923
void changeToNullBlock()
Definition: memblock.h:462
Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7, Range r8, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:647
T_numtype & operator()(TinyVector< int, 3 > index)
Definition: array-impl.h:1511
T_array & noConst() const
Definition: array-impl.h:1884
Array(Array< T_numtype, N_rank > &array, Range r0)
Definition: array-impl.h:787
void setStorage(GeneralArrayStorage< N_rank >)
T_iterator beginFast() const
Definition: array-impl.h:893
T_numtype & operator()(const TinyVector< int, 11 > &index)
Definition: array-impl.h:1681
void constructSubarray(Array< T_numtype, N_rank > &array, const RectDomain< N_rank > &)
_bz_ArrayExpr< ArrayIndexMapping< typename asExpr< T_array >::T_expr, N0, N1, N2, N3 > > operator()(IndexPlaceholder< N0 >, IndexPlaceholder< N1 >, IndexPlaceholder< N2 >, IndexPlaceholder< N3 >) const
Definition: array-impl.h:2120
Array(int length0, int length1, int length2, int length3, int length4, int length5, int length6, int length7, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:275
void resizeAndPreserve(const TinyVector< int, N_rank > &)
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
Definition: array-impl.h:1374
int ubound(int rank) const
Definition: array-impl.h:1182
_bz_global blitz::IndexPlaceholder< 0 > i
Definition: indexexpr.h:256
Array(Array< T_numtype, N_rank > &array, Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7)
Definition: array-impl.h:826
T_numtype *restrict dataZero()
Definition: array-impl.h:931
int length(int=0) const
Definition: range.h:242
Array(Array< T_numtype, N_rank > &array, Range r0, Range r1, Range r2)
Definition: array-impl.h:797
bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1)) const
Definition: array-impl.h:1334
bool isInRange(int i0, int i1, int i2, int i3) const
Definition: array-impl.h:1224
Array(T_numtype *restrict dataFirst, TinyVector< int, N_rank > shape, GeneralArrayStorage< N_rank > storage=T_default_storage(contiguousData))
Definition: array-impl.h:354
T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10)
Definition: array-impl.h:1868
T_numtype & operator()(const TinyVector< int, 6 > &index)
Definition: array-impl.h:1565
T_numtype &restrict operator()(int i0, int i1)
Definition: array-impl.h:1713
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=T_default_storage())
Definition: array-impl.h:716
Array(T_numtype *restrict dataFirst, TinyVector< int, N_rank > shape, preexistingMemoryPolicy deletionPolicy, GeneralArrayStorage< N_rank > storage=T_default_storage(contiguousData))
Construct an array from an existing block of memory.
Definition: array-impl.h:402
const T_numtype &restrict operator()(int i0, int i1) const
Definition: array-impl.h:1707
bool isInRange(int i0, int i1, int i2, int i3, int i4, int i5, int i6) const
Definition: array-impl.h:1248
Array(int length0, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:186
Array(Range r0, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:478
void free()
Definition: array-impl.h:985
bool isInRange(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8) const
Definition: array-impl.h:1270
Array(int length0, int length1, int length2, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:208
_bz_global blitz::IndexPlaceholder< 1 > j
Definition: indexexpr.h:257
const Array< typename multicomponent_traits< T_numtype >::T_element, N_rank > operator[](const int component) const
Definition: array-impl.h:2243
Array(int length0, int length1, int length2, int length3, int length4, int length5, int length6, int length7, int length8, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:292
_bz_ArrayExpr< ArrayIndexMapping< typename asExpr< T_array >::T_expr, N0, N1, N2, N3, N4, N5, N6, N7 > > operator()(IndexPlaceholder< N0 >, IndexPlaceholder< N1 >, IndexPlaceholder< N2 >, IndexPlaceholder< N3 >, IndexPlaceholder< N4 >, IndexPlaceholder< N5 >, IndexPlaceholder< N6 >, IndexPlaceholder< N7 >) const
Definition: array-impl.h:2163
T_numtype & operator()(const TinyVector< int, 4 > &index)
Definition: array-impl.h:1527
const T_numtype &restrict operator()(const TinyVector< int, 11 > &index) const
Definition: array-impl.h:1667
diffType dataOffset() const
Definition: array-impl.h:916
Array(Array< T_numtype, N_rank > &array, const StridedDomain< N_rank > &subdomain)
Definition: array-impl.h:858
Array(Range r0, Range r1, Range r2, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:504
bool isInRange(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) const
Definition: array-impl.h:1283
Array(_bz_ArrayExpr< T_expr > expr)
Construct an array from an expression.
T_array operator()(Range r0, Range r1) const
Definition: array-impl.h:1903
Definition: listinit.h:71
bool isInRange(int i0, int i1) const
Definition: array-impl.h:1213
const TinyVector< diffType, N_rank > & stride() const
Definition: array-impl.h:1173
T_numtype & operator()(TinyVector< int, 1 > index)
Definition: array-impl.h:1483
void doTranspose(int destRank, int sourceRank, T_array &array)
T_numtype &restrict operator()(int i0, int i1, int i2, int i3)
Definition: array-impl.h:1740
Array(const Array< T_numtype, N_rank > &array)
Definition: array-impl.h:757
bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1), int BZ_DEBUG_PARAM(i2)) const
Definition: array-impl.h:1342
void constructSlice(Array< T_numtype, N_rank2 > &array, R0 r0, R1 r1, R2 r2, R3 r3, R4 r4, R5 r5, R6 r6, R7 r7, R8 r8, R9 r9, R10 r10)
T_numtype & operator()(const TinyVector< int, 10 > &index)
Definition: array-impl.h:1655
T_array & operator&=(T_numtype)
Scalar operand assignment.
const T_numtype &restrict operator()(const TinyVector< int, N_rank2 > &index) const
Definition: array-impl.h:1464
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=T_default_storage())
Definition: array-impl.h:680
int length(int rank) const
Definition: array-impl.h:1005
_bz_ArrayExpr< ArrayIndexMapping< typename asExpr< T_array >::T_expr, N0 > > operator()(IndexPlaceholder< N0 >) const
Definition: array-impl.h:2095
TinyVector< int, N_rank > T_index
Definition: array-impl.h:134
diffType zeroOffset_
Definition: array-impl.h:2505
bool isInRange(int i0) const
Definition: array-impl.h:1209
Array< P_numtype2, N_rank > chopComponent(P_numtype2 a, int compNum, int numComponents) const
Definition: array-impl.h:898
bool isVectorAligned(diffType offset) const
Returns true if the array is aligned on a simd vector width.
Definition: array-impl.h:1198
bool threadLocal(bool disableLock=true) const
Definition: array-impl.h:1179
T_array & operator>>=(T_numtype)
Scalar operand assignment.
static const int rank_
Definition: array-impl.h:157
T_array & operator+=(T_numtype)
Scalar operand assignment.
const T_numtype &restrict operator()(TinyVector< int, 3 > index) const
Definition: array-impl.h:1503
const Array< typename multicomponent_traits< T_numtype >::T_element, N_rank > operator[](const unsigned component) const
Definition: array-impl.h:2230
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
Definition: array-impl.h:1443
Definition: tvecglobs.h:70
const_iterator end() const
Definition: array-impl.h:972
T_array & operator<<=(T_numtype)
Scalar operand assignment.
T_array operator()(const RectDomain< N_rank > &subdomain) const
Definition: array-impl.h:1887
Array(const TinyVector< int, N_rank > &extent, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:455
T_array transpose(int r0, int r1, int r2=0, int r3=0, int r4=0, int r5=0, int r6=0, int r7=0, int r8=0, int r9=0, int r10=0) const
const T_numtype &restrict operator()(int i0, int i1, int i2) const
Definition: array-impl.h:1719
int ordering(int storageRankIndex) const
Definition: array-impl.h:1023
sizeType blockLength() const
Returns the allocated length of the memory block.
Definition: memblock.h:435
T_numtype *restrict getInitializationIterator()
Definition: array-impl.h:2395
Array(int length0, int length1, int length2, int length3, int length4, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:231
T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4)
Definition: array-impl.h:1755
static bool isVectorAligned(const T *restrict pointer)
Test if a pointer to T is simd aligned.
Definition: simdtypes.h:46
int dimensions() const
Definition: array-impl.h:961
Definition: et-forward.h:10
T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7) const
Definition: array-impl.h:1935
const T_numtype &restrict operator()(const TinyVector< int, 9 > &index) const
Definition: array-impl.h:1619
T_array reindex(const TinyVector< int, N_rank > &)
Definition: memblock.h:50
T_array operator()(const StridedDomain< N_rank > &subdomain) const
Definition: array-impl.h:1893
IndirectArray< T_array, T_indexContainer > operator[](const T_indexContainer &index)
Definition: array-impl.h:2253
bool isInRange(int i0, int i1, int i2) const
Definition: array-impl.h:1218
T_numtype &restrict operator()(int i0)
Definition: array-impl.h:1701
Array(Range r0, Range r1, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:489
_bz_ArrayExpr< ArrayIndexMapping< typename asExpr< T_array >::T_expr, N0, N1, N2, N3, N4, N5, N6, N7, N8 > > operator()(IndexPlaceholder< N0 >, IndexPlaceholder< N1 >, IndexPlaceholder< N2 >, IndexPlaceholder< N3 >, IndexPlaceholder< N4 >, IndexPlaceholder< N5 >, IndexPlaceholder< N6 >, IndexPlaceholder< N7 >, IndexPlaceholder< N8 >) const
Definition: array-impl.h:2176
static T_ret product(const TinyVector< T_numtype1, N_length > &a)
Definition: tvecglobs.h:83
void slice(int rank, Range r)
TinyVector< diffType, N_rank > stride_
Definition: array-impl.h:2504
const T_numtype &restrict operator()(int i0, int i1, int i2, int i3) const
Definition: array-impl.h:1733
Array(T_numtype *restrict dataFirst, TinyVector< int, N_rank > shape, TinyVector< diffType, N_rank > stride, preexistingMemoryPolicy deletionPolicy, GeneralArrayStorage< N_rank > storage=T_default_storage(contiguousData))
Construct an array from an existing block of memory, with a given set of strides. ...
Definition: array-impl.h:429
const T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9, int i10) const
Definition: array-impl.h:1857
const T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7) const
Definition: array-impl.h:1799
ArrayIterator< T_numtype, N_rank > iterator
Definition: array-impl.h:138
Array(int length0, int length1, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:194
diffType dataFirstOffset() const
Definition: array-impl.h:937
T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4, int i5, int i6)
Definition: array-impl.h:1790
bool canCollapse(int outerRank, int innerRank) const
Definition: array-impl.h:2398
bool isInRange(int i0, int i1, int i2, int i3, int i4) const
Definition: array-impl.h:1231
T_array operator()(Range r0, Range r1, Range r2, Range r3) const
Definition: array-impl.h:1913
T_array & initialize(T_numtype)
Scalar operand assignment.
T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7, Range r8, Range r9) const
Definition: array-impl.h:1947
bool isInRange(int i0, int i1, int i2, int i3, int i4, int i5) const
Definition: array-impl.h:1239
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
Definition: array-impl.h:1428
const T_numtype &restrict operator()(const TinyVector< int, 5 > &index) const
Definition: array-impl.h:1535
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
Definition: array-impl.h:1386
TinyVector< int, N_rank > ubound() const
Definition: array-impl.h:1185
T_array operator()(Range r0) const
Definition: array-impl.h:1898
bool isMajorRank(int rank) const
Definition: array-impl.h:991
void slice(int &, nilArraySection, Array< T_numtype, N_rank2 > &, TinyVector< int, N_rank2 > &, int)
Definition: array-impl.h:2459
Definition: array-impl.h:82
const T_numtype &restrict operator()(const TinyVector< int, 8 > &index) const
Definition: array-impl.h:1597
T_type *restrict data_
Definition: memblock.h:313
iterator end()
Definition: array-impl.h:969
T_numtype & operator()(const TinyVector< int, 8 > &index)
Definition: array-impl.h:1608
Array(Array< T_numtype, N_rank > &array, Range r0, Range r1)
Definition: array-impl.h:792
Definition: array-impl.h:66
Array(Range r0, Range r1, Range r2, Range r3, Range r4, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:541
_bz_inline2 void setupStorage(int rank)
diffType stride(int rank) const
Definition: array-impl.h:1176
Array< typename multicomponent_traits< T_numtype >::T_element, N_rank > operator[](const unsigned component)
Definition: array-impl.h:2222
Definition: et-forward.h:48
Array(Array< T_numtype, N_rank > &array, Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7, Range r8, Range r9, Range r10)
Definition: array-impl.h:844
ptrdiff_t diffType
Definition: blitz.h:111
const T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4) const
Definition: array-impl.h:1747
const T_numtype &restrict operator()(const TinyVector< int, 10 > &index) const
Definition: array-impl.h:1643
T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4, int i5)
Definition: array-impl.h:1772
void calculateZeroOffset()
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
Definition: array-impl.h:1362
_bz_ArrayExpr< ArrayIndexMapping< typename asExpr< T_array >::T_expr, N0, N1, N2 > > operator()(IndexPlaceholder< N0 >, IndexPlaceholder< N1 >, IndexPlaceholder< N2 >) const
Definition: array-impl.h:2111
bool assertInRange(const T_index &BZ_DEBUG_PARAM(index)) const
Definition: array-impl.h:1320
T_array & operator^=(T_numtype)
Scalar operand assignment.
void transposeSelf(int r0, int r1, int r2=0, int r3=0, int r4=0, int r5=0, int r6=0, int r7=0, int r8=0, int r9=0, int r10=0)
Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:588
static int rank()
Definition: array-impl.h:1036
int columns() const
Definition: array-impl.h:905
T_array & operator/=(T_numtype)
Scalar operand assignment.
Array(Array< T_numtype, N_rank > &array, Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6)
Definition: array-impl.h:820
T_numtype &restrict operator()(const TinyVector< int, N_rank2 > &index)
Definition: array-impl.h:1471
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
Definition: array-impl.h:1399
int depth() const
Definition: array-impl.h:958
sizeType storageSize() const
Returns the length of the array storage.
Definition: array-impl.h:1170
const TinyVector< int, N_rank > & extent() const
Definition: array-impl.h:978
Definition: array-impl.h:85
bool assertInRange(int BZ_DEBUG_PARAM(i0), int BZ_DEBUG_PARAM(i1), int BZ_DEBUG_PARAM(i2), int BZ_DEBUG_PARAM(i3)) const
Definition: array-impl.h:1352
_bz_ArrayExpr< ArrayIndexMapping< typename asExpr< T_array >::T_expr, N0, N1, N2, N3, N4, N5, N6, N7, N8, N9 > > operator()(IndexPlaceholder< N0 >, IndexPlaceholder< N1 >, IndexPlaceholder< N2 >, IndexPlaceholder< N3 >, IndexPlaceholder< N4 >, IndexPlaceholder< N5 >, IndexPlaceholder< N6 >, IndexPlaceholder< N7 >, IndexPlaceholder< N8 >, IndexPlaceholder< N9 >) const
Definition: array-impl.h:2189
T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7, Range r8, Range r9, Range r10) const
Definition: array-impl.h:1953
FastArrayIterator< T_numtype, N_rank > T_iterator
Definition: array-impl.h:136
size_t sizeType
Definition: blitz.h:110
Array(GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:178
bool isStorageContiguous() const
GeneralArrayStorage< N_rank > storage_
Definition: array-impl.h:2502
bool isRankStoredAscending(int rank) const
Definition: array-impl.h:995
sizeType numElements() const
Definition: array-impl.h:1012
bool isInRange(const T_index &index) const
Definition: array-impl.h:1312
const TinyVector< int, N_rank > & ordering() const
Definition: array-impl.h:1026
const T_numtype &restrict operator()(int i0) const
Definition: array-impl.h:1695
const TinyVector< int, N_rank > & base() const
Definition: array-impl.h:881
const T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4, int i5, int i6) const
Definition: array-impl.h:1781
void swap(Array< P_numtype, N_rank > &, Array< P_numtype, N_rank > &)
Definition: array-impl.h:2523
Definition: memblock.h:67
int zeroOffset() const
Definition: array-impl.h:1194
int cols() const
Definition: array-impl.h:902
Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:563
ConstArrayIterator< T_numtype, N_rank > const_iterator
Definition: array-impl.h:139
Array< typename multicomponent_traits< T_numtype >::T_element, N_rank > operator[](const int component)
Definition: array-impl.h:2238
Array< T_numtype, N_rank > T_array
Definition: array-impl.h:135
Definition: memblock.h:51
Array(Array< T_numtype, N_rank > &array, const RectDomain< N_rank > &subdomain)
Definition: array-impl.h:851
Array(int length0, int length1, int length2, int length3, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:219
Declaration of class Array, the "Swiss army knife" of Blitz expression template classes.
Definition: array-impl.h:106
N_length & a
Definition: tvecglobs.h:47
T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9)
Definition: array-impl.h:1847
T_array & operator|=(T_numtype)
Scalar operand assignment.
RectDomain< N_rank > domain() const
Definition: array-impl.h:964
Array(Array< T_numtype, N_rank > &array, Range r0, Range r1, Range r2, Range r3)
Definition: array-impl.h:802
void find(Array< TinyVector< int, N_rank >, 1 > &, const Array< P_numtype, N_rank > &)
Definition: array-impl.h:2537
#define _bz_inline2
Definition: tuning.h:126
Array(Array< T_numtype, N_rank > &array, Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7, Range r8)
Definition: array-impl.h:832
bool lockReferenceCount(bool lockingPolicy) const
Definition: memblock.h:451
_bz_ArrayExpr< ArrayIndexMapping< typename asExpr< T_array >::T_expr, N0, N1, N2, N3, N4 > > operator()(IndexPlaceholder< N0 >, IndexPlaceholder< N1 >, IndexPlaceholder< N2 >, IndexPlaceholder< N3 >, IndexPlaceholder< N4 >) const
Definition: array-impl.h:2129
const T_numtype &restrict operator()(const TinyVector< int, 6 > &index) const
Definition: array-impl.h:1555
preexistingMemoryPolicy
Definition: memblock.h:49
const T_numtype &restrict operator()(TinyVector< int, 2 > index) const
Definition: array-impl.h:1489
bool isMinorRank(int rank) const
Definition: array-impl.h:993
int lbound(int rank) const
Definition: array-impl.h:1000
Array(int length0, int length1, int length2, int length3, int length4, int length5, int length6, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:259
Array(Array< T_numtype, N_rank > &array, Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7, Range r8, Range r9)
Definition: array-impl.h:838
T_numtype &restrict operator()(int i0, int i1, int i2)
Definition: array-impl.h:1726
const T_numtype &restrict operator()(TinyVector< int, 1 > index) const
Definition: array-impl.h:1477
Array(T_numtype *restrict dataFirst, TinyVector< int, N_rank > shape, TinyVector< diffType, N_rank > stride, GeneralArrayStorage< N_rank > storage=T_default_storage(contiguousData))
Construct an array from an existing block of memory, with a given set of strides. ...
Definition: array-impl.h:379
T_array & operator%=(T_numtype)
Scalar operand assignment.
Definition: memblock.h:52
#define BZ_ETPARM(X)
Definition: tuning.h:138
Definition: array-impl.h:76
TinyVector< int, N_rank > length_
Definition: array-impl.h:2503
T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6) const
Definition: array-impl.h:1929
const TinyVector< int, N_rank > & length() const
Definition: array-impl.h:1007
T_array operator()(Range r0, Range r1, Range r2, Range r3, Range r4) const
Definition: array-impl.h:1918
T_numtype & operator()(const TinyVector< int, 5 > &index)
Definition: array-impl.h:1545
T_numtype *restrict dataFirst()
Definition: array-impl.h:955
T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8)
Definition: array-impl.h:1827
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
Definition: array-impl.h:1297
void reference(const T_array &)
ListInitializationSwitch< T_array > operator=(T_numtype x)
Scalar operand assignment.
Definition: array-impl.h:2271
T_array reverse(int rank)
N_length const TinyVector< T_numtype2, N_length > & b
Definition: tvecglobs.h:49
bool assertInRange(int BZ_DEBUG_PARAM(i0)) const
Definition: array-impl.h:1327
const T_numtype *restrict dataFirst() const
Definition: array-impl.h:952
const T_numtype *restrict dataZero() const
Definition: array-impl.h:928
Array(int length0, int length1, int length2, int length3, int length4, int length5, int length6, int length7, int length8, int length9, int length10, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:329
TinyVector< int, N_rank > lbound() const
Definition: array-impl.h:1002
const T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4, int i5) const
Definition: array-impl.h:1763
T_numtype *restrict data()
Definition: array-impl.h:922
P_numtype T_numtype
Definition: array-impl.h:133
#define restrict
Definition: compiler.h:95
T_array & operator*=(T_numtype)
Scalar operand assignment.
Array(int length0, int length1, int length2, int length3, int length4, int length5, int length6, int length7, int length8, int length9, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:310
_bz_inline2 void computeStrides()
const TinyVector< int, N_rank > & shape() const
Definition: array-impl.h:1159
Array(Array< T_numtype, N_rank > &array, Range r0, Range r1, Range r2, Range r3, Range r4)
Definition: array-impl.h:808
T_array & operator-=(T_numtype)
Scalar operand assignment.
const T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8) const
Definition: array-impl.h:1817
Array(Range r0, Range r1, Range r2, Range r3, Range r4, Range r5, Range r6, Range r7, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:616
bool isInRangeForDim(int i, int d) const
Definition: array-impl.h:1205
Array(Range r0, Range r1, Range r2, Range r3, GeneralArrayStorage< N_rank > storage=T_default_storage())
Definition: array-impl.h:521
_bz_ArrayExpr< ArrayIndexMapping< typename asExpr< T_array >::T_expr, N0, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10 > > operator()(IndexPlaceholder< N0 >, IndexPlaceholder< N1 >, IndexPlaceholder< N2 >, IndexPlaceholder< N3 >, IndexPlaceholder< N4 >, IndexPlaceholder< N5 >, IndexPlaceholder< N6 >, IndexPlaceholder< N7 >, IndexPlaceholder< N8 >, IndexPlaceholder< N9 >, IndexPlaceholder< N10 >) const
Definition: array-impl.h:2202
T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7)
Definition: array-impl.h:1808
const T_numtype &restrict operator()(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) const
Definition: array-impl.h:1837
T_numtype first(T_numtype lowRange=0) const
Definition: range.h:228
T_array operator()(Range r0, Range r1, Range r2) const
Definition: array-impl.h:1908
_bz_ArrayExpr< ArrayIndexMapping< typename asExpr< T_array >::T_expr, N0, N1, N2, N3, N4, N5, N6 > > operator()(IndexPlaceholder< N0 >, IndexPlaceholder< N1 >, IndexPlaceholder< N2 >, IndexPlaceholder< N3 >, IndexPlaceholder< N4 >, IndexPlaceholder< N5 >, IndexPlaceholder< N6 >) const
Definition: array-impl.h:2151
Array(Array< T_numtype, N_rank2 > &array, R0 r0, R1 r1, R2 r2, R3 r3, R4 r4, R5 r5, R6 r6, R7 r7, R8 r8, R9 r9, R10 r10)
Definition: array-impl.h:871
void dumpStructureInformation(ostream &os=cout) const
const_iterator begin() const
Definition: array-impl.h:890
MemoryBlockReference< P_numtype > T_base
Definition: array-impl.h:113
_bz_ArrayExpr< ArrayIndexMapping< typename asExpr< T_array >::T_expr, N0, N1, N2, N3, N4, N5 > > operator()(IndexPlaceholder< N0 >, IndexPlaceholder< N1 >, IndexPlaceholder< N2 >, IndexPlaceholder< N3 >, IndexPlaceholder< N4 >, IndexPlaceholder< N5 >) const
Definition: array-impl.h:2140
const T_numtype &restrict operator()(const TinyVector< int, 7 > &index) const
Definition: array-impl.h:1575
int rows() const
Definition: array-impl.h:1152
const T_numtype *restrict data() const
Definition: array-impl.h:919
T_numtype & operator()(const TinyVector< int, 9 > &index)
Definition: array-impl.h:1631
Definition: array-impl.h:79
iterator begin()
Definition: array-impl.h:887
void weakReference(const T_array &)
bool isInRange(int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7) const
Definition: array-impl.h:1258
int extent(int rank) const
Definition: array-impl.h:975
void reindexSelf(const TinyVector< int, N_rank > &)
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
Definition: array-impl.h:1413
const T_numtype &restrict operator()(const TinyVector< int, 4 > &index) const
Definition: array-impl.h:1519
T_numtype & operator()(TinyVector< int, 2 > index)
Definition: array-impl.h:1496
T_numtype & operator()(const TinyVector< int, 7 > &index)
Definition: array-impl.h:1586
_bz_ArrayExpr< ArrayIndexMapping< typename asExpr< T_array >::T_expr, N0, N1 > > operator()(IndexPlaceholder< N0 >, IndexPlaceholder< N1 >) const
Definition: array-impl.h:2103