4 #ifndef CONTAINER_CLASSES_H_
5 #define CONTAINER_CLASSES_H_
15 static const int32
MA_VERS[
ML_TOP] = { 120070905, 220070803, 320071126 };
18 #define MEM_LAYOUT_VAL C_TYPE
20 #define MEM_LAYOUT_VAL ARPA_TYPE
25 template<
class T,
bool lgBC>
28 static const int p_nd = lgBC ? 3 : 1;
36 if( t <
p_p[1] || t >=
p_p[2] )
120 template<
class T,
bool lgBC>
141 template<
class T,
bool lgBC>
150 template<
class T,
bool lgBC>
188 template<
class T,
bool lgBC>
261 return getvec(i-1,index).
d[index[i-1]];
268 return getvec(i-1,index).
d[index[i-1]];
274 template<
int d,mem_layout ALLOC=MEM_LAYOUT_VAL>
295 for(
int i=0; i < d; ++i )
329 for(
int i=0; i < d; ++i )
356 s[n-1] =
max(
s[n-1],index[n-1]);
357 nsl[n-1] += index[n-1];
383 "Allocation type must be C_TYPE or ARPA_TYPE" );
387 for(
int dim=0; dim < d; ++dim )
388 n1[dim] = n2[dim] = 0L;
391 for(
int dim=0; dim < d-1; ++dim )
395 else if( ALLOC ==
C_TYPE )
398 for(
int i = d-2; i >= 0; --i )
399 st[i] =
st[i+1]*
s[i];
533 template<
class T,
int N, mem_layout ALLOC,
bool lgBC>
class n_pointer;
536 template<
class T,
int N>
551 template<
class T,
int N>
596 template<
class T,
int N>
613 template<
class T,
int N>
626 return value_type( p_p+i*p_st[0], p_st+1, &p_v->d[i] );
664 template<
class T,
int N>
679 template<
class T,
int N>
724 template<
class T,
int N>
741 template<
class T,
int N>
754 return value_type( p_p+i*p_st[0], p_st+1, &p_v->d[i] );
914 template<
class T,
int d, mem_layout ALLOC=MEM_LAYOUT_VAL,
bool lgBC=lgBOUNDSCHECKVAL>
946 for(
int i=0; i < d-1; ++i )
952 for(
int i=0; i < d-1; ++i )
993 size_type index[] = { d1, d2, d3, d4, d5 };
999 size_type index[] = { d1, d2, d3, d4, d5, d6 };
1034 memset(
data(), 0,
p_g.size*
sizeof(T) );
1046 p_g.reserve( 1, index );
1052 p_g.reserve( 2, index );
1057 const size_type index[] = { i1, i2, i3 };
1058 p_g.reserve( 3, index );
1063 const size_type index[] = { i1, i2, i3, i4 };
1064 p_g.reserve( 4, index );
1069 const size_type index[] = { i1, i2, i3, i4, i5 };
1070 p_g.reserve( 5, index );
1075 const size_type index[] = { i1, i2, i3, i4, i5, i6 };
1076 p_g.reserve( 6, index );
1082 "Allocation type must be C_TYPE or ARPA_TYPE" );
1088 for(
int dim=0; dim < d; ++dim )
1090 n1[dim] = n2[dim] = 0L;
1094 if(
p_g.nsl[dim] > 0 )
1095 p_psl[dim] =
new T*[
p_g.nsl[dim] ];
1107 else if( ALLOC ==
C_TYPE )
1109 for(
int i=0; i < d-1; ++i )
1153 size_type index[] = { d1, d2, d3, d4, d5 };
1158 size_type index[] = { d1, d2, d3, d4, d5, d6 };
1163 for(
int n=0; n < d; n++ )
1166 p_g.reserve_recursive( 0, index );
1206 if(
p_g.lgInbounds( 1, index ) )
1210 T* s = ( n > 0 ) ? &(*t)[i1][0] :
NULL;
1226 return iterator( &(*t)[i1][i2][i3] );
1232 if(
p_g.lgInbounds( 2, index ) )
1236 T* s = ( n > 0 ) ? &(*t)[i1][i2][0] :
NULL;
1252 return iterator( &(*t)[i1][i2][i3][i4] );
1258 if(
p_g.lgInbounds( 3, index ) )
1262 T* s = ( n > 0 ) ? &(*t)[i1][i2][i3][0] :
NULL;
1278 return iterator( &(*t)[i1][i2][i3][i4][i5] );
1284 if(
p_g.lgInbounds( 4, index ) )
1288 T* s = ( n > 0 ) ? &(*t)[i1][i2][i3][i4][0] :
NULL;
1304 return iterator( &(*t)[i1][i2][i3][i4][i5][i6] );
1309 size_type index[] = { i1, i2, i3, i4, i5 };
1310 if(
p_g.lgInbounds( 5, index ) )
1314 T* s = ( n > 0 ) ? &(*t)[i1][i2][i3][i4][i5][0] :
NULL;
1347 if( !
p_g.lgInbounds( 2, index ) )
1349 return (*
this)[i1][i2];
1354 if( !
p_g.lgInbounds( 2, index ) )
1356 return (*
this)[i1][i2];
1361 if( !
p_g.lgInbounds( 3, index ) )
1363 return (*
this)[i1][i2][i3];
1368 if( !
p_g.lgInbounds( 3, index ) )
1370 return (*
this)[i1][i2][i3];
1375 if( !
p_g.lgInbounds( 4, index ) )
1377 return (*
this)[i1][i2][i3][i4];
1382 if( !
p_g.lgInbounds( 4, index ) )
1384 return (*
this)[i1][i2][i3][i4];
1388 size_type index[] = { i1, i2, i3, i4, i5 };
1389 if( !
p_g.lgInbounds( 5, index ) )
1391 return (*
this)[i1][i2][i3][i4][i5];
1395 size_type index[] = { i1, i2, i3, i4, i5 };
1396 if( !
p_g.lgInbounds( 5, index ) )
1398 return (*
this)[i1][i2][i3][i4][i5];
1402 size_type index[] = { i1, i2, i3, i4, i5, i6 };
1403 if( !
p_g.lgInbounds( 6, index ) )
1405 return (*
this)[i1][i2][i3][i4][i5][i6];
1409 size_type index[] = { i1, i2, i3, i4, i5, i6 };
1410 if( !
p_g.lgInbounds( 6, index ) )
1412 return (*
this)[i1][i2][i3][i4][i5][i6];
1544 return p_iterator(i1, i2, i3, i4,
p_g.v.d[i1].d[i2].d[i3].d[i4].n);
1551 return p_iterator(i1, i2, i3, i4,
p_g.v.d[i1].d[i2].d[i3].d[i4].n);
1558 return p_iterator(i1, i2, i3, i4, i5,
p_g.v.d[i1].d[i2].d[i3].d[i4].d[i5].n);
1565 return p_iterator(i1, i2, i3, i4, i5,
p_g.v.d[i1].d[i2].d[i3].d[i4].d[i5].n);
1578 return *
begin(i1, i2);
1582 return *
begin(i1, i2);
1586 return *
begin(i1, i2, i3);
1590 return *
begin(i1, i2, i3);
1594 return *
begin(i1, i2, i3, i4);
1598 return *
begin(i1, i2, i3, i4);
1602 return *
begin(i1, i2, i3, i4, i5);
1606 return *
begin(i1, i2, i3, i4, i5);
1611 return *(
end(i1) - 1);
1615 return *(
end(i1) - 1);
1619 return *(
end(i1, i2) - 1);
1623 return *(
end(i1, i2) - 1);
1627 return *(
end(i1, i2, i3) - 1);
1631 return *(
end(i1, i2, i3) - 1);
1635 return *(
end(i1, i2, i3, i4) - 1);
1639 return *(
end(i1, i2, i3, i4) - 1);
1643 return *(
end(i1, i2, i3, i4, i5) - 1);
1647 return *(
end(i1, i2, i3, i4, i5) - 1);
1660 for(
int i=0; i < d-1; ++i )
1663 return (
p_g.size == 0UL &&
p_dsl.size() == 0 );
1742 #define INSTANTIATE_MULTI_ARR( TYPE, BC ) \
1743 template class pntr<TYPE,BC>; \
1744 template class const_pntr<TYPE,BC>;
1746 template<
class T,
bool lgBC=lgBOUNDSCHECKVAL>
1801 alloc( begin, end );
1871 p_size = (size_t)(end-begin);
1890 T* nptr = nptr_alloc -
p_begin;
1903 p_size = (size_t)(end-p_begin);
2018 return (
size() == 0 );
const_pointer data() const
Definition: container_classes.h:2025
const_iterator end(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const
Definition: container_classes.h:1560
multi_arr< realnum, 2 >::const_iterator mr2ci
Definition: container_classes.h:1720
T * operator->() const
Definition: container_classes.h:102
iterator begin(size_type i1)
Definition: container_classes.h:1456
random_access_iterator_tag iterator_category
Definition: container_classes.h:929
iterator p_iterator_bc(size_type i1, size_type i2, size_type i3) const
Definition: container_classes.h:1229
multi_arr< double, 2 >::const_iterator md2ci
Definition: container_classes.h:1731
void p_setupArray(size_type n1[], size_type n2[], const tree_vec *g, size_type l)
Definition: container_classes.h:1172
pntr< T, lgBC > iterator
Definition: container_classes.h:937
void alloc(size_type d1, size_type d2, size_type d3, size_type d4, size_type d5)
Definition: container_classes.h:1151
const_n_pointer(const T *p, const size_t *st=NULL, const tree_vec *v=NULL)
Definition: container_classes.h:672
iterator p_iterator(size_type i1, size_type i2) const
Definition: container_classes.h:1193
reference at(size_type i)
Definition: container_classes.h:1948
reference back(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
Definition: container_classes.h:1641
const T * const_pointer
Definition: container_classes.h:1763
multi_arr< long, 5 >::iterator ml5i
Definition: container_classes.h:1714
reference back(size_type i1, size_type i2, size_type i3)
Definition: container_classes.h:1625
size_type size
Definition: container_classes.h:282
const T value_type
Definition: container_classes.h:701
valarray< T > p_dsl
Definition: container_classes.h:920
multi_geom()
Definition: container_classes.h:304
const size_t * p_st
Definition: container_classes.h:555
multi_arr< realnum, 6 >::iterator mr6i
Definition: container_classes.h:1727
const_reference back(size_type i1, size_type i2, size_type i3) const
Definition: container_classes.h:1629
void clear()
Definition: container_classes.h:317
n_pointer(T *p, const size_t *st, const tree_vec *v=NULL)
Definition: container_classes.h:559
basic_pntr(T *p0)
Definition: container_classes.h:65
const_iterator ptr(size_type i1, size_type i2, size_type i3) const
Definition: container_classes.h:1427
const_reference at(size_type i1, size_type i2, size_type i3, size_type i4) const
Definition: container_classes.h:1379
pntr & operator++()
Definition: container_classes.h:130
T value_type
Definition: container_classes.h:654
const_pntr & operator--()
Definition: container_classes.h:164
multi_geom(const multi_geom &m)
Definition: container_classes.h:308
pntr - interface class to replace normal pointers
Definition: container_classes.h:121
const_pntr(const pntr< T, lgBC > &t)
Definition: container_classes.h:159
flex_arr()
Definition: container_classes.h:1794
iterator begin(size_type i1, size_type i2)
Definition: container_classes.h:1464
iterator ptr(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6)
Definition: container_classes.h:1447
const_iterator begin(size_type i1, size_type i2, size_type i3) const
Definition: container_classes.h:1476
const_reference at(size_type i) const
Definition: container_classes.h:1954
T * get_ptr(T *v)
Definition: cddefines.h:1115
NORETURN void TotalInsanity(void)
Definition: service.cpp:1174
void alloc()
Definition: container_classes.h:1078
T & operator[](const ptrdiff_t n) const
Definition: container_classes.h:106
ptrdiff_t difference_type
Definition: container_classes.h:58
flex_arr< realnum >::const_iterator farci
Definition: container_classes.h:2046
void p_set_vals(T *p0, T *p1, T *p2)
Definition: container_classes.h:41
const T * const_pointer
Definition: container_classes.h:934
static const size_type npos
Definition: container_classes.h:941
long size_type
Definition: container_classes.h:1764
void zero()
Definition: container_classes.h:1030
const_iterator ptr(size_type i1, size_type i2, size_type i3, size_type i4) const
Definition: container_classes.h:1435
multi_arr< bool, 5 >::const_iterator mb5ci
Definition: container_classes.h:1704
const T value_type
Definition: container_classes.h:765
const_reference at(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const
Definition: container_classes.h:1393
iterator p_iterator(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6) const
Definition: container_classes.h:1297
const_reference back(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const
Definition: container_classes.h:1645
T * p_p
Definition: container_classes.h:539
bool operator!=(const basic_pntr &t) const
Definition: container_classes.h:112
const_pointer data() const
Definition: container_classes.h:1673
const tree_vec * p_v
Definition: container_classes.h:714
multi_arr< long, 3 >::iterator ml3i
Definition: container_classes.h:1710
reference at(size_type i1, size_type i2)
Definition: container_classes.h:1344
void p_clear0()
Definition: container_classes.h:943
reference front(size_type i1, size_type i2)
Definition: container_classes.h:1576
void p_clear0()
Definition: container_classes.h:1770
multi_arr< long, 2 >::const_iterator ml2ci
Definition: container_classes.h:1709
const tree_vec * p_v
Definition: container_classes.h:652
T value_type
Definition: container_classes.h:930
basic_pntr()
Definition: container_classes.h:69
multi_arr< long, 2 >::iterator ml2i
Definition: container_classes.h:1708
const_iterator ptr(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const
Definition: container_classes.h:1443
const tree_vec & getvec(const size_type i, const size_type index[]) const
Definition: container_classes.h:263
const tree_vec * p_v
Definition: container_classes.h:571
void invalidate_array(T *p, size_t size)
Definition: cddefines.h:1097
size_type size() const
Definition: container_classes.h:1650
const_pntr - same as pntr, except that it replaces const pointers rather than normal pointers ...
Definition: container_classes.h:151
const_pntr< T, lgBC > const_iterator
Definition: container_classes.h:1767
void reserve(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6)
Definition: container_classes.h:1072
const tree_vec * p_v
Definition: container_classes.h:635
void reserve(const size_type n, const size_type index[])
Definition: container_classes.h:345
bool operator<=(const basic_pntr &t) const
Definition: container_classes.h:114
iterator end()
Definition: container_classes.h:1981
reference front(size_type i1)
Definition: container_classes.h:1568
void p_clear0()
Definition: container_classes.h:205
basic_pntr & operator++()
Definition: container_classes.h:80
Definition: container_classes.h:1747
void reserve(size_type i1, size_type i2)
Definition: container_classes.h:1048
size_type st[d]
size of each dimension (only used in C_TYPE layout)
Definition: container_classes.h:284
iterator p_iterator(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const
Definition: container_classes.h:1271
size_t p_size
Definition: container_classes.h:1749
const_n_pointer(const T *p, const size_t *st, const tree_vec *v=NULL)
Definition: container_classes.h:717
reference operator[](size_type i)
Definition: container_classes.h:1939
multi_arr< realnum, 3 >::const_iterator mr3ci
Definition: container_classes.h:1722
flex_arr< realnum >::iterator fari
Definition: container_classes.h:2045
const T * p_p
Definition: container_classes.h:778
const tree_vec * p_v
Definition: container_classes.h:541
n_pointer(T *p, const size_t *st, const tree_vec *v)
Definition: container_classes.h:638
const size_t * p_st
Definition: container_classes.h:668
T value_type
Definition: container_classes.h:52
void invalidate()
Definition: container_classes.h:1843
const_n_pointer< T, d-1, ALLOC, lgBC > const_indexed_type
Definition: container_classes.h:1338
T *** p_ptr3
Definition: container_classes.h:923
const tree_vec * p_v
Definition: container_classes.h:669
iterator ptr(size_type i1, size_type i2)
Definition: container_classes.h:1415
const_iterator begin(size_type i1) const
Definition: container_classes.h:1460
void clear()
Definition: container_classes.h:1011
iterator end(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
Definition: container_classes.h:1553
void reserve(size_type size)
Definition: container_classes.h:1849
T ** p_ptr2
Definition: container_classes.h:922
const T & operator[](const ptrdiff_t n) const
Definition: container_classes.h:177
T * pointer
Definition: container_classes.h:55
const_reference back(size_type i1) const
Definition: container_classes.h:1613
NORETURN void OUT_OF_RANGE(const char *str)
Definition: cddefines.h:646
random_access_iterator_tag iterator_category
Definition: container_classes.h:1758
tree_vec * d
Definition: container_classes.h:202
reference at(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6)
Definition: container_classes.h:1400
const tree_vec * p_v
Definition: container_classes.h:601
multi_arr< long, 4 >::const_iterator ml4ci
Definition: container_classes.h:1713
tree_vec & getvec(const size_type i, const size_type index[])
Definition: container_classes.h:256
flex_arr(const flex_arr &f)
Definition: container_classes.h:1803
const size_t * p_st
Definition: container_classes.h:683
multi_arr< long, 3 >::const_iterator ml3ci
Definition: container_classes.h:1711
multi_arr< bool, 5 >::iterator mb5i
Definition: container_classes.h:1703
~basic_pntr()
Definition: container_classes.h:77
void p_free(T *p) const
Definition: container_classes.h:1788
T * p_p
Definition: container_classes.h:569
const size_t * p_st
Definition: container_classes.h:698
const_pointer ptr0() const
Definition: container_classes.h:2034
n_pointer< T, N-1, C_TYPE, true > value_type
Definition: container_classes.h:620
multi_arr< bool, 4 >::iterator mb4i
Definition: container_classes.h:1701
void reserve(size_type i1, size_type i2, size_type i3)
Definition: container_classes.h:1054
size_type n
Definition: container_classes.h:201
multi_arr< bool, 2 >::const_iterator mb2ci
Definition: container_classes.h:1698
const_reference front(size_type i1, size_type i2, size_type i3) const
Definition: container_classes.h:1588
size_type capacity() const
Definition: container_classes.h:2012
pntr< T, lgBC > iterator
Definition: container_classes.h:1766
basic_pntr & operator+=(const ptrdiff_t n)
Definition: container_classes.h:95
iterator end(size_type i1, size_type i2, size_type i3, size_type i4)
Definition: container_classes.h:1539
void zero()
Definition: container_classes.h:1838
bool operator>=(const basic_pntr &t) const
Definition: container_classes.h:116
const_n_pointer(const T *p, const size_t *st=NULL, const tree_vec *v=NULL)
Definition: container_classes.h:702
const_reference front(size_type i1, size_type i2, size_type i3, size_type i4) const
Definition: container_classes.h:1596
const_reference front(size_type i1, size_type i2) const
Definition: container_classes.h:1580
reference back()
Definition: container_classes.h:1999
basic_pntr(T *p0, T *p1, T *p2)
Definition: container_classes.h:61
const const_n_pointer< T, d, ALLOC, lgBC > n_ptr() const
Definition: container_classes.h:1329
n_pointer(T *p, const size_t *st=NULL, const tree_vec *v=NULL)
Definition: container_classes.h:574
const_pntr(T *p0, T *p1, T *p2)
Definition: container_classes.h:156
bool p_init
Definition: container_classes.h:1752
const_pntr & operator+=(const ptrdiff_t n)
Definition: container_classes.h:166
flex_arr(size_type begin, size_type end)
Definition: container_classes.h:1798
void p_clear0()
sizes of each of the pointer arrays
Definition: container_classes.h:288
const_reference back(size_type i1, size_type i2, size_type i3, size_type i4) const
Definition: container_classes.h:1637
const T * p_p
Definition: container_classes.h:682
const_iterator end(size_type i1) const
Definition: container_classes.h:1504
static const int p_nd
Definition: container_classes.h:28
n_pointer< T, N-1, C_TYPE, false > value_type
Definition: container_classes.h:558
bool empty() const
Definition: container_classes.h:2016
const_iterator end(size_type i1, size_type i2, size_type i3, size_type i4) const
Definition: container_classes.h:1546
const_iterator begin() const
Definition: container_classes.h:1976
random_access_iterator_tag iterator_category
Definition: container_classes.h:51
size_type size() const
Definition: container_classes.h:2008
multi_arr(size_type d1, size_type d2, size_type d3, size_type d4)
Definition: container_classes.h:984
multi_arr< bool, 2 >::iterator mb2i
Definition: container_classes.h:1697
T * p_p
Definition: container_classes.h:633
const T * p_p
Definition: container_classes.h:712
size_t size_type
Definition: container_classes.h:57
T **** p_ptr4
Definition: container_classes.h:924
const flex_arr & operator=(const flex_arr &f)
Definition: container_classes.h:1812
const multi_geom< d, ALLOC > & clone() const
Definition: container_classes.h:1681
basic_pntr & operator--()
Definition: container_classes.h:86
void finalize(void)
Definition: container_classes.h:380
reference at(size_type i1, size_type i2, size_type i3, size_type i4)
Definition: container_classes.h:1372
const_reference at(size_type i1, size_type i2) const
Definition: container_classes.h:1351
size_type capacity() const
Definition: container_classes.h:1654
flex_arr< double >::iterator fadi
Definition: container_classes.h:2047
iterator ptr(size_type i1, size_type i2, size_type i3, size_type i4)
Definition: container_classes.h:1431
const_n_pointer< T, N-1, C_TYPE, true > value_type
Definition: container_classes.h:748
void p_setupArray(size_type n1[], size_type n2[], const tree_vec *w, size_type l)
Definition: container_classes.h:409
pointer p_pointer(size_type i) const
Definition: container_classes.h:1910
n_pointer(T *p, const size_t *st, const tree_vec *v)
Definition: container_classes.h:655
const size_t * p_st
Definition: container_classes.h:634
multi_arr(size_type d1, size_type d2, size_type d3, size_type d4, size_type d5, size_type d6)
Definition: container_classes.h:996
const size_t * p_st
Definition: container_classes.h:713
const_iterator ptr(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6) const
Definition: container_classes.h:1451
multi_arr< long, 6 >::iterator ml6i
Definition: container_classes.h:1716
multi_geom< d, ALLOC > p_g
Definition: container_classes.h:918
bool operator==(const basic_pntr &t) const
Definition: container_classes.h:111
void alloc(size_type d1, size_type d2)
Definition: container_classes.h:1136
const tree_vec * p_v
Definition: container_classes.h:780
const_pntr< T, lgBC > const_iterator
Definition: container_classes.h:938
iterator ptr(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
Definition: container_classes.h:1439
const tree_vec * p_v
Definition: container_classes.h:684
~multi_arr()
Definition: container_classes.h:1007
Definition: container_classes.h:915
const_pntr()
Definition: container_classes.h:157
iterator end(size_type i1, size_type i2, size_type i3)
Definition: container_classes.h:1525
const T value_type
Definition: container_classes.h:716
const size_t * p_st
Definition: container_classes.h:651
void alloc(size_type d1, size_type d2, size_type d3, size_type d4)
Definition: container_classes.h:1146
T * p_ptr
Definition: container_classes.h:1755
multi_arr< bool, 3 >::iterator mb3i
Definition: container_classes.h:1699
const size_t * p_st
Definition: container_classes.h:762
iterator p_iterator(size_type i1, size_type i2, size_type i3) const
Definition: container_classes.h:1219
const_iterator begin(size_type i1, size_type i2, size_type i3, size_type i4) const
Definition: container_classes.h:1484
const indexed_type operator[](size_type i)
Definition: container_classes.h:1334
ptrdiff_t difference_type
Definition: container_classes.h:936
const_n_pointer< T, N-1, ARPA_TYPE, true > value_type
Definition: container_classes.h:731
ptrdiff_t difference_type
Definition: container_classes.h:1765
const T * operator->() const
Definition: container_classes.h:176
iterator p_iterator_bc(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6) const
Definition: container_classes.h:1307
multi_arr< double, 5 >::const_iterator md5ci
Definition: container_classes.h:1737
const pntr operator-(const ptrdiff_t n) const
Definition: container_classes.h:136
pntr(T *p0)
Definition: container_classes.h:125
multi_arr< double, 5 >::iterator md5i
Definition: container_classes.h:1736
Definition: container_classes.h:534
const T & const_reference
Definition: container_classes.h:1761
iterator p_iterator(size_type i1, size_type i2, size_type i3, size_type i4) const
Definition: container_classes.h:1245
const tree_vec & operator=(const tree_vec &m)
Definition: container_classes.h:239
const T & operator*() const
Definition: container_classes.h:175
multi_arr(const multi_geom< d, ALLOC > &g)
Definition: container_classes.h:967
void invalidate()
Definition: container_classes.h:1036
T ** p_psl[d-1]
Definition: container_classes.h:919
reference p_index(size_type i) const
Definition: container_classes.h:1928
const tree_vec * p_v
Definition: container_classes.h:699
const_pntr(T *p0)
Definition: container_classes.h:155
flex_arr< double >::const_iterator fadci
Definition: container_classes.h:2048
pointer data()
Definition: container_classes.h:2021
const_iterator begin(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const
Definition: container_classes.h:1492
const size_t * p_st
Definition: container_classes.h:600
const_reference front(size_type i1) const
Definition: container_classes.h:1572
void p_clear1()
Definition: container_classes.h:950
Definition: container_classes.h:12
const pntr< T, lgBC > operator+(const ptrdiff_t n, const pntr< T, lgBC > &t)
Definition: container_classes.h:142
reference at(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
Definition: container_classes.h:1386
const n_pointer< T, d, ALLOC, lgBC > n_ptr()
Definition: container_classes.h:1325
const_iterator end(size_type i1, size_type i2, size_type i3) const
Definition: container_classes.h:1532
const_iterator begin(size_type i1, size_type i2) const
Definition: container_classes.h:1468
flex_arr< long >::const_iterator falci
Definition: container_classes.h:2044
const_pntr & operator-=(const ptrdiff_t n)
Definition: container_classes.h:170
long max(int a, long b)
Definition: cddefines.h:821
const_iterator end() const
Definition: container_classes.h:1985
bool p_lgInbounds(size_type i) const
Definition: container_classes.h:1923
multi_arr< realnum, 3 >::iterator mr3i
Definition: container_classes.h:1721
reference front()
Definition: container_classes.h:1990
pntr & operator--()
Definition: container_classes.h:132
T & reference
Definition: container_classes.h:1760
T * p_p
Definition: container_classes.h:554
basic_pntr & operator=(const basic_pntr &)=default
multi_arr(const multi_arr &m)
Definition: container_classes.h:1002
size_type nsl[d]
stride for each dimension (only used in C_TYPE layout)
Definition: container_classes.h:285
T & reference
Definition: container_classes.h:931
const_n_pointer(const T *p, const size_t *st, const tree_vec *v)
Definition: container_classes.h:732
const multi_geom & operator=(const multi_geom &m)
Definition: container_classes.h:322
Definition: container_classes.h:275
reference back(size_type i1)
Definition: container_classes.h:1609
#define NULL
Definition: cddefines.h:115
void clear()
Definition: container_classes.h:234
multi_arr(size_type d1, size_type d2, size_type d3, size_type d4, size_type d5)
Definition: container_classes.h:990
const_n_pointer(const T *p, const size_t *st, const tree_vec *v)
Definition: container_classes.h:783
basic_pntr & operator-=(const ptrdiff_t n)
Definition: container_classes.h:96
bool lgInbounds(const size_type n, const size_type index[]) const
Definition: container_classes.h:338
const_reference front() const
Definition: container_classes.h:1994
multi_arr< realnum, 4 >::iterator mr4i
Definition: container_classes.h:1723
tree_vec(const tree_vec &m)
Definition: container_classes.h:225
T value_type
Definition: container_classes.h:637
reference back(size_type i1, size_type i2)
Definition: container_classes.h:1617
n_pointer(T *p, const size_t *st, const tree_vec *v)
Definition: container_classes.h:604
reference front(size_type i1, size_type i2, size_type i3)
Definition: container_classes.h:1584
const T * p_p
Definition: container_classes.h:727
const_reference back() const
Definition: container_classes.h:2003
iterator p_iterator_bc(size_type i1, size_type i2, size_type i3, size_type i4) const
Definition: container_classes.h:1255
const T * p_p
Definition: container_classes.h:744
T * pointer
Definition: container_classes.h:1762
const_pntr & operator++()
Definition: container_classes.h:162
reference at(size_type i1, size_type i2, size_type i3)
Definition: container_classes.h:1358
const size_t * p_st
Definition: container_classes.h:779
Definition: container_classes.h:12
multi_arr< double, 4 >::iterator md4i
Definition: container_classes.h:1734
iterator p_iterator_bc(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const
Definition: container_classes.h:1281
iterator begin(size_type i1, size_type i2, size_type i3)
Definition: container_classes.h:1472
T ***** p_ptr5
Definition: container_classes.h:925
void reserve_recursive(const size_type n, size_type index[])
Definition: container_classes.h:359
bool operator>(const basic_pntr &t) const
Definition: container_classes.h:115
valarray< T > & vals()
Definition: container_classes.h:1686
multi_arr(size_type d1, size_type d2, size_type d3)
Definition: container_classes.h:978
const T * p_p
Definition: container_classes.h:667
const tree_vec * p_v
Definition: container_classes.h:586
tree_vec v
Definition: container_classes.h:280
#define ASSERT(exp)
Definition: cddefines.h:637
multi_arr< realnum, 2 >::iterator mr2i
Definition: container_classes.h:1719
T * p_p
Definition: container_classes.h:616
T * p_alloc(size_t size) const
Definition: container_classes.h:1784
void p_clear1()
Definition: container_classes.h:292
multi_arr< realnum, 4 >::const_iterator mr4ci
Definition: container_classes.h:1724
const T value_type
Definition: container_classes.h:782
iterator end(size_type i1, size_type i2)
Definition: container_classes.h:1511
const tree_vec * p_v
Definition: container_classes.h:729
void reserve(size_type i1)
Definition: container_classes.h:1042
multi_arr< bool, 6 >::const_iterator mb6ci
Definition: container_classes.h:1706
void realloc(size_type end)
Definition: container_classes.h:1883
iterator begin(size_type i1, size_type i2, size_type i3, size_type i4)
Definition: container_classes.h:1480
mem_layout
Definition: container_classes.h:12
n_pointer< T, N-1, ARPA_TYPE, true > value_type
Definition: container_classes.h:603
T value_type
Definition: container_classes.h:1759
const_iterator ptr(size_type i1, size_type i2) const
Definition: container_classes.h:1419
n_pointer(T *p, const size_t *st=NULL, const tree_vec *v=NULL)
Definition: container_classes.h:544
T * p_p
Definition: container_classes.h:650
iterator end(size_type i1)
Definition: container_classes.h:1497
pntr(T *p0, T *p1, T *p2)
Definition: container_classes.h:126
iterator p_iterator_bc(size_type i1, size_type i2) const
Definition: container_classes.h:1203
multi_arr< double, 2 >::iterator md2i
Definition: container_classes.h:1730
pntr()
Definition: container_classes.h:127
n_pointer(T *p, const size_t *st, const tree_vec *v=NULL)
Definition: container_classes.h:589
n_pointer(T *p, const size_t *st, const tree_vec *v)
Definition: container_classes.h:621
bool empty() const
Definition: container_classes.h:1658
const tree_vec * p_v
Definition: container_classes.h:556
static const int32 MA_VERS[ML_TOP]
Definition: container_classes.h:15
const_iterator end(size_type i1, size_type i2) const
Definition: container_classes.h:1518
const size_t * p_st
Definition: container_classes.h:540
multi_arr< long, 5 >::const_iterator ml5ci
Definition: container_classes.h:1715
void alloc(size_type d1, size_type d2, size_type d3, size_type d4, size_type d5, size_type d6)
Definition: container_classes.h:1156
const tree_vec * p_v
Definition: container_classes.h:618
const_n_pointer(const T *p, const size_t *st, const tree_vec *v)
Definition: container_classes.h:749
const tree_vec * p_v
Definition: container_classes.h:763
T * p_p[p_nd]
Definition: container_classes.h:29
T * p_p
Definition: container_classes.h:599
multi_arr< double, 6 >::const_iterator md6ci
Definition: container_classes.h:1739
const_reference at(size_type i1, size_type i2, size_type i3) const
Definition: container_classes.h:1365
pointer data()
Definition: container_classes.h:1666
multi_arr< bool, 4 >::const_iterator mb4ci
Definition: container_classes.h:1702
const T & const_reference
Definition: container_classes.h:54
const T * const_pointer
Definition: container_classes.h:56
iterator begin(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
Definition: container_classes.h:1488
const T * p_p
Definition: container_classes.h:697
void clear()
Definition: container_classes.h:1833
const T * p_p
Definition: container_classes.h:761
iterator begin()
Definition: container_classes.h:1972
size_t size_type
Definition: container_classes.h:199
multi_arr< bool, 3 >::const_iterator mb3ci
Definition: container_classes.h:1700
long p_begin
Definition: container_classes.h:1750
T * p_ptr
Definition: container_classes.h:921
Definition: container_classes.h:26
T * pointer
Definition: container_classes.h:933
T * p_p
Definition: container_classes.h:584
multi_arr< double, 3 >::const_iterator md3ci
Definition: container_classes.h:1733
reference front(size_type i1, size_type i2, size_type i3, size_type i4)
Definition: container_classes.h:1592
T * p_index_checked(const ptrdiff_t n) const
Definition: container_classes.h:31
multi_arr(size_type d1, size_type d2)
Definition: container_classes.h:972
~flex_arr()
Definition: container_classes.h:1808
const valarray< T > & vals() const
Definition: container_classes.h:1690
void reserve(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
Definition: container_classes.h:1066
flex_arr< long >::iterator fali
Definition: container_classes.h:2043
const_iterator ptr(size_type i) const
Definition: container_classes.h:1965
multi_arr< long, 6 >::const_iterator ml6ci
Definition: container_classes.h:1717
reference front(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
Definition: container_classes.h:1600
n_pointer< T, N-1, ARPA_TYPE, false > value_type
Definition: container_classes.h:543
void p_clear1()
Definition: container_classes.h:214
const_reference at(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6) const
Definition: container_classes.h:1407
const_n_pointer(const T *p, const size_t *st, const tree_vec *v=NULL)
Definition: container_classes.h:687
multi_arr< double, 6 >::iterator md6i
Definition: container_classes.h:1738
n_pointer< T, d-1, ALLOC, lgBC > indexed_type
Definition: container_classes.h:1333
multi_arr< double, 4 >::const_iterator md4ci
Definition: container_classes.h:1735
const tree_vec * p_v
Definition: container_classes.h:746
void alloc(size_type begin, size_type end)
Definition: container_classes.h:1862
Definition: container_classes.h:533
multi_arr< double, 3 >::iterator md3i
Definition: container_classes.h:1732
void alloc(size_type index[])
Definition: container_classes.h:1161
const size_t * p_st
Definition: container_classes.h:617
const const_pntr operator-(const ptrdiff_t n) const
Definition: container_classes.h:183
const T & const_reference
Definition: container_classes.h:932
void alloc(size_type d1, size_type d2, size_type d3)
Definition: container_classes.h:1141
void alloc(const multi_geom< d, ALLOC > &g)
Definition: container_classes.h:1126
void reserve(size_type i1, size_type i2, size_type i3, size_type i4)
Definition: container_classes.h:1060
const_reference back(size_type i1, size_type i2) const
Definition: container_classes.h:1621
~tree_vec()
Definition: container_classes.h:230
tree_vec - a simple class to store the bounds checking information for multi_arr
Definition: container_classes.h:197
T & reference
Definition: container_classes.h:53
reference back(size_type i1, size_type i2, size_type i3, size_type i4)
Definition: container_classes.h:1633
size_t size_type
Definition: container_classes.h:935
long p_end
Definition: container_classes.h:1751
multi_arr()
Definition: container_classes.h:963
tree_vec()
Definition: container_classes.h:221
T value_type
Definition: container_classes.h:588
flex_arr< bool >::const_iterator fabci
Definition: container_classes.h:2042
T value_type
Definition: container_classes.h:573
iterator ptr(size_type i1, size_type i2, size_type i3)
Definition: container_classes.h:1423
bool operator<(const basic_pntr &t) const
Definition: container_classes.h:113
const_n_pointer< T, N-1, C_TYPE, false > value_type
Definition: container_classes.h:686
const_reference front(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const
Definition: container_classes.h:1604
const size_t * p_st
Definition: container_classes.h:745
multi_arr< realnum, 6 >::const_iterator mr6ci
Definition: container_classes.h:1728
const_n_pointer(const T *p, const size_t *st, const tree_vec *v)
Definition: container_classes.h:766
Definition: container_classes.h:12
flex_arr< bool >::iterator fabi
Definition: container_classes.h:2041
multi_arr< realnum, 5 >::iterator mr5i
Definition: container_classes.h:1725
const_n_pointer< T, N-1, ARPA_TYPE, false > value_type
Definition: container_classes.h:671
multi_arr< realnum, 5 >::const_iterator mr5ci
Definition: container_classes.h:1726
void p_clear1()
Definition: container_classes.h:1775
Definition: container_classes.h:12
const size_t * p_st
Definition: container_classes.h:570
multi_arr< bool, 6 >::iterator mb6i
Definition: container_classes.h:1705
iterator ptr(size_type i)
Definition: container_classes.h:1961
const size_t * p_st
Definition: container_classes.h:728
size_t size_type
Definition: container_classes.h:278
T ****** p_ptr6
Definition: container_classes.h:926
~multi_geom()
Definition: container_classes.h:313
const multi_arr & operator=(const multi_arr &m)
Definition: container_classes.h:1016
pointer ptr0()
Definition: container_classes.h:2030
multi_arr< long, 4 >::iterator ml4i
Definition: container_classes.h:1712
const const_pntr operator+(const ptrdiff_t n) const
Definition: container_classes.h:182
iterator p_iterator(size_type i) const
Definition: container_classes.h:1915
size_type s[d]
allocated size (number of data elements, pointers are not counted)
Definition: container_classes.h:283
const pntr operator+(const ptrdiff_t n) const
Definition: container_classes.h:135
const size_t * p_st
Definition: container_classes.h:585
T & operator*() const
Definition: container_classes.h:98
T * p_ptr_alloc
Definition: container_classes.h:1754