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