4 #ifndef CONTAINER_CLASSES_H_ 
    5 #define CONTAINER_CLASSES_H_ 
    7 void do_dump_state(
const void* buf, 
size_t nelem, 
size_t size, FILE* out, int32 magic);
 
    8 void do_restore_state(
void* buf, 
size_t nelem, 
size_t size, FILE *in, int32 magic);
 
   18 static const int32 
MA_VERS[
ML_TOP] = { 120070905, 220070803, 320071126 };
 
   21 #define MEM_LAYOUT_VAL C_TYPE 
   23 #define MEM_LAYOUT_VAL ARPA_TYPE 
   28 template<
class T, 
bool lgBC>
 
   31         static const int p_nd = lgBC ? 3 : 1;
 
   39 #               pragma warning( disable : 4127 ) 
   43                         if( t < 
p_p[1] || t >= 
p_p[2] )
 
   52 #               pragma warning( disable : 4127 ) 
  133 template<
class T, 
bool lgBC>
 
  154 template<
class T, 
bool lgBC>
 
  163 template<
class T, 
bool lgBC>
 
  201 template<
class T, 
bool lgBC>
 
  274                         return getvec(i-1,index).
d[index[i-1]];
 
  281                         return getvec(i-1,index).
d[index[i-1]];
 
  287 template<
int d,mem_layout ALLOC=MEM_LAYOUT_VAL>
 
  308                 for( 
int i=0; i < d; ++i )
 
  342                         for( 
int i=0; i < d; ++i )
 
  369                 s[n-1] = 
max(
s[n-1],index[n-1]);
 
  370                 nsl[n-1] += index[n-1];
 
  397 #       pragma warning( disable : 4127 ) 
  405                         for( 
int dim=0; dim < d; ++dim )
 
  406                                 n1[dim] = n2[dim] = 0L;
 
  409                         for( 
int dim=0; dim < d-1; ++dim )
 
  413                 else if( ALLOC == 
C_TYPE )
 
  416                         for( 
int i = d-2; i >= 0; --i )
 
  417                                 st[i] = 
st[i+1]*
s[i];
 
  551 template<
class T, 
int N, mem_layout ALLOC, 
bool lgBC> 
class n_pointer;
 
  554 template<
class T, 
int N>
 
  569 template<
class T, 
int N>
 
  614 template<
class T, 
int N>
 
  627                 return value_type( *((T**)p_p+i), NULL, &p_v->d[i] );
 
  631 template<
class T, 
int N>
 
  644                 return value_type( p_p+i*p_st[0], p_st+1, &p_v->d[i] );
 
  682 template<
class T, 
int N>
 
  697 template<
class T, 
int N>
 
  742 template<
class T, 
int N>
 
  755                 return value_type( *((T**)p_p+i), NULL, &p_v->d[i] );
 
  759 template<
class T, 
int N>
 
  772                 return value_type( p_p+i*p_st[0], p_st+1, &p_v->d[i] );
 
  937 template<
class T, 
int d, mem_layout ALLOC=MEM_LAYOUT_VAL, 
bool lgBC=lgBOUNDSCHECKVAL>
 
  969                 for( 
int i=0; i < d-1; ++i )
 
  975                 for( 
int i=0; i < d-1; ++i )
 
 1016                 size_type index[] = { d1, d2, d3, d4, d5 };
 
 1022                 size_type index[] = { d1, d2, d3, d4, d5, d6 };
 
 1052                         memset( 
data(), 0, 
p_g.size*
sizeof(T) );
 
 1081                 p_g.reserve( 1, index );
 
 1087                 p_g.reserve( 2, index );
 
 1092                 const size_type index[] = { i1, i2, i3 };
 
 1093                 p_g.reserve( 3, index );
 
 1098                 const size_type index[] = { i1, i2, i3, i4 };
 
 1099                 p_g.reserve( 4, index );
 
 1104                 const size_type index[] = { i1, i2, i3, i4, i5 };
 
 1105                 p_g.reserve( 5, index );
 
 1110                 const size_type index[] = { i1, i2, i3, i4, i5, i6 };
 
 1111                 p_g.reserve( 6, index );
 
 1118 #       pragma warning( disable : 4127 ) 
 1126                         for( 
int dim=0; dim < d; ++dim )
 
 1128                                 n1[dim] = n2[dim] = 0L;
 
 1132                                         if( 
p_g.nsl[dim] > 0 )
 
 1133                                                 p_psl[dim] = 
new T*[ 
p_g.nsl[dim] ];
 
 1145                 else if( ALLOC == 
C_TYPE )
 
 1147                         for( 
int i=0; i < d-1; ++i )
 
 1191                 size_type index[] = { d1, d2, d3, d4, d5 };
 
 1196                 size_type index[] = { d1, d2, d3, d4, d5, d6 };
 
 1201                 for( 
int n=0; n < d; n++ )
 
 1204                 p_g.reserve_recursive( 0, index );
 
 1235 #       pragma warning( disable : 4127 ) 
 1248                 if( 
p_g.lgInbounds( 1, index ) )
 
 1252                         T* s = ( n > 0 ) ? &(*t)[i1][0] : NULL;
 
 1265 #       pragma warning( disable : 4127 ) 
 1272                         return iterator( &(*t)[i1][i2][i3] );
 
 1278                 if( 
p_g.lgInbounds( 2, index ) )
 
 1282                         T* s = ( n > 0 ) ? &(*t)[i1][i2][0] : NULL;
 
 1295 #       pragma warning( disable : 4127 ) 
 1302                         return iterator( &(*t)[i1][i2][i3][i4] );
 
 1308                 if( 
p_g.lgInbounds( 3, index ) )
 
 1312                         T* s = ( n > 0 ) ? &(*t)[i1][i2][i3][0] : NULL;
 
 1325 #       pragma warning( disable : 4127 ) 
 1332                         return iterator( &(*t)[i1][i2][i3][i4][i5] );
 
 1338                 if( 
p_g.lgInbounds( 4, index ) )
 
 1342                         T* s = ( n > 0 ) ? &(*t)[i1][i2][i3][i4][0] : NULL;
 
 1355 #       pragma warning( disable : 4127 ) 
 1362                         return iterator( &(*t)[i1][i2][i3][i4][i5][i6] );
 
 1367                 size_type index[] = { i1, i2, i3, i4, i5 };
 
 1368                 if( 
p_g.lgInbounds( 5, index ) )
 
 1372                         T* s = ( n > 0 ) ? &(*t)[i1][i2][i3][i4][i5][0] : NULL;
 
 1405                 if( !
p_g.lgInbounds( 2, index ) )
 
 1407                 return (*
this)[i1][i2];
 
 1412                 if( !
p_g.lgInbounds( 2, index ) )
 
 1414                 return (*
this)[i1][i2];
 
 1419                 if( !
p_g.lgInbounds( 3, index ) )
 
 1421                 return (*
this)[i1][i2][i3];
 
 1426                 if( !
p_g.lgInbounds( 3, index ) )
 
 1428                 return (*
this)[i1][i2][i3];
 
 1433                 if( !
p_g.lgInbounds( 4, index ) )
 
 1435                 return (*
this)[i1][i2][i3][i4];
 
 1440                 if( !
p_g.lgInbounds( 4, index ) )
 
 1442                 return (*
this)[i1][i2][i3][i4];
 
 1446                 size_type index[] = { i1, i2, i3, i4, i5 };
 
 1447                 if( !
p_g.lgInbounds( 5, index ) )
 
 1449                 return (*
this)[i1][i2][i3][i4][i5];
 
 1453                 size_type index[] = { i1, i2, i3, i4, i5 };
 
 1454                 if( !
p_g.lgInbounds( 5, index ) )
 
 1456                 return (*
this)[i1][i2][i3][i4][i5];
 
 1460                 size_type index[] = { i1, i2, i3, i4, i5, i6 };
 
 1461                 if( !
p_g.lgInbounds( 6, index ) )
 
 1463                 return (*
this)[i1][i2][i3][i4][i5][i6];
 
 1467                 size_type index[] = { i1, i2, i3, i4, i5, i6 };
 
 1468                 if( !
p_g.lgInbounds( 6, index ) )
 
 1470                 return (*
this)[i1][i2][i3][i4][i5][i6];
 
 1559 #       pragma warning( disable : 4127 ) 
 1570 #       pragma warning( disable : 4127 ) 
 1581 #       pragma warning( disable : 4127 ) 
 1592 #       pragma warning( disable : 4127 ) 
 1603 #       pragma warning( disable : 4127 ) 
 1614 #       pragma warning( disable : 4127 ) 
 1625 #       pragma warning( disable : 4127 ) 
 1630                         return p_iterator(i1, i2, i3, i4, 
p_g.v.d[i1].d[i2].d[i3].d[i4].n);
 
 1636 #       pragma warning( disable : 4127 ) 
 1641                         return p_iterator(i1, i2, i3, i4, 
p_g.v.d[i1].d[i2].d[i3].d[i4].n);
 
 1647 #       pragma warning( disable : 4127 ) 
 1652                         return p_iterator(i1, i2, i3, i4, i5, 
p_g.v.d[i1].d[i2].d[i3].d[i4].d[i5].n);
 
 1658 #       pragma warning( disable : 4127 ) 
 1663                         return p_iterator(i1, i2, i3, i4, i5, 
p_g.v.d[i1].d[i2].d[i3].d[i4].d[i5].n);
 
 1676                 return *
begin(i1, i2);
 
 1680                 return *
begin(i1, i2);
 
 1684                 return *
begin(i1, i2, i3);
 
 1688                 return *
begin(i1, i2, i3);
 
 1692                 return *
begin(i1, i2, i3, i4);
 
 1696                 return *
begin(i1, i2, i3, i4);
 
 1700                 return *
begin(i1, i2, i3, i4, i5);
 
 1704                 return *
begin(i1, i2, i3, i4, i5);
 
 1709                 return *(
end(i1) - 1);
 
 1713                 return *(
end(i1) - 1);
 
 1717                 return *(
end(i1, i2) - 1);
 
 1721                 return *(
end(i1, i2) - 1);
 
 1725                 return *(
end(i1, i2, i3) - 1);
 
 1729                 return *(
end(i1, i2, i3) - 1);
 
 1733                 return *(
end(i1, i2, i3, i4) - 1);
 
 1737                 return *(
end(i1, i2, i3, i4) - 1);
 
 1741                 return *(
end(i1, i2, i3, i4, i5) - 1);
 
 1745                 return *(
end(i1, i2, i3, i4, i5) - 1);
 
 1758                 for( 
int i=0; i < d-1; ++i )
 
 1759                         if( 
p_psl[i] != NULL )
 
 1761                 return ( 
p_g.size == 0UL && 
p_dsl.size() == 0 );
 
 1840 #define INSTANTIATE_MULTI_ARR( TYPE, BC ) \ 
 1841 template class pntr<TYPE,BC>; \ 
 1842 template class const_pntr<TYPE,BC>; 
 1844 template<
class T, 
bool lgBC=lgBOUNDSCHECKVAL>
 
 1899                 alloc( begin, end );
 
 1970 #       pragma warning( disable : 4127 ) 
 1990                         p_size = (size_t)(end-begin);
 
 2009                         T* nptr = nptr_alloc - 
p_begin;
 
 2022                         p_size = (size_t)(end-p_begin);
 
 2038 #       pragma warning( disable : 4127 ) 
 2055 #       pragma warning( disable : 4127 ) 
 2145                 return ( 
size() == 0 );
 
const_pointer data() const 
const_iterator end(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const 
multi_arr< realnum, 2 >::const_iterator mr2ci
iterator begin(size_type i1)
random_access_iterator_tag iterator_category
iterator p_iterator_bc(size_type i1, size_type i2, size_type i3) const 
multi_arr< double, 2 >::const_iterator md2ci
void p_setupArray(size_type n1[], size_type n2[], const tree_vec *g, size_type l)
void alloc(size_type d1, size_type d2, size_type d3, size_type d4, size_type d5)
const_n_pointer(const T *p, const size_t *st=NULL, const tree_vec *v=NULL)
iterator p_iterator(size_type i1, size_type i2) const 
reference at(size_type i)
reference back(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
multi_arr< long, 5 >::iterator ml5i
reference back(size_type i1, size_type i2, size_type i3)
multi_arr< realnum, 6 >::iterator mr6i
const_reference back(size_type i1, size_type i2, size_type i3) const 
n_pointer(T *p, const size_t *st, const tree_vec *v=NULL)
const_iterator ptr(size_type i1, size_type i2, size_type i3) const 
const_reference at(size_type i1, size_type i2, size_type i3, size_type i4) const 
void state_do(FILE *io, bool lgGet)
const_pntr & operator--()
multi_geom(const multi_geom &m)
pntr - interface class to replace normal pointers 
const_pntr(const pntr< T, lgBC > &t)
iterator begin(size_type i1, size_type i2)
iterator ptr(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6)
const_iterator begin(size_type i1, size_type i2, size_type i3) const 
const_reference at(size_type i) const 
NORETURN void TotalInsanity(void)
T & operator[](const ptrdiff_t n) const 
ptrdiff_t difference_type
flex_arr< realnum >::const_iterator farci
void p_set_vals(T *p0, T *p1, T *p2)
static const size_type npos
const_iterator ptr(size_type i1, size_type i2, size_type i3, size_type i4) const 
multi_arr< bool, 5 >::const_iterator mb5ci
const_reference at(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const 
iterator p_iterator(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6) const 
const_reference back(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const 
bool operator!=(const basic_pntr &t) const 
const_pointer data() const 
multi_arr< long, 3 >::iterator ml3i
reference at(size_type i1, size_type i2)
reference front(size_type i1, size_type i2)
multi_arr< long, 2 >::const_iterator ml2ci
multi_arr< long, 2 >::iterator ml2i
const_iterator ptr(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const 
const tree_vec & getvec(const size_type i, const size_type index[]) const 
void invalidate_array(T *p, size_t size)
const_pntr - same as pntr, except that it replaces const pointers rather than normal pointers ...
const_pntr< T, lgBC > const_iterator
void reserve(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6)
void reserve(const size_type n, const size_type index[])
bool operator<=(const basic_pntr &t) const 
reference front(size_type i1)
basic_pntr & operator++()
void reserve(size_type i1, size_type i2)
size_type st[d]
size of each dimension (only used in C_TYPE layout) 
iterator p_iterator(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const 
const_n_pointer(const T *p, const size_t *st, const tree_vec *v=NULL)
reference operator[](size_type i)
multi_arr< realnum, 3 >::const_iterator mr3ci
flex_arr< realnum >::iterator fari
void do_dump_state(const void *buf, size_t nelem, size_t size, FILE *out, int32 magic)
n_pointer(T *p, const size_t *st, const tree_vec *v)
const_n_pointer< T, d-1, ALLOC, lgBC > const_indexed_type
iterator ptr(size_type i1, size_type i2)
const_iterator begin(size_type i1) const 
iterator end(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
void reserve(size_type size)
const T & operator[](const ptrdiff_t n) const 
const_reference back(size_type i1) const 
NORETURN void OUT_OF_RANGE(const char *str)
random_access_iterator_tag iterator_category
reference at(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6)
multi_arr< long, 4 >::const_iterator ml4ci
tree_vec & getvec(const size_type i, const size_type index[])
flex_arr(const flex_arr &f)
multi_arr< long, 3 >::const_iterator ml3ci
multi_arr< bool, 5 >::iterator mb5i
const_pointer ptr0() const 
n_pointer< T, N-1, C_TYPE, true > value_type
multi_arr< bool, 4 >::iterator mb4i
void reserve(size_type i1, size_type i2, size_type i3)
multi_arr< bool, 2 >::const_iterator mb2ci
const_reference front(size_type i1, size_type i2, size_type i3) const 
size_type capacity() const 
basic_pntr & operator+=(const ptrdiff_t n)
iterator end(size_type i1, size_type i2, size_type i3, size_type i4)
bool operator>=(const basic_pntr &t) const 
const_n_pointer(const T *p, const size_t *st=NULL, const tree_vec *v=NULL)
const_reference front(size_type i1, size_type i2, size_type i3, size_type i4) const 
const_reference front(size_type i1, size_type i2) const 
basic_pntr(T *p0, T *p1, T *p2)
const const_n_pointer< T, d, ALLOC, lgBC > n_ptr() const 
n_pointer(T *p, const size_t *st=NULL, const tree_vec *v=NULL)
const_pntr(T *p0, T *p1, T *p2)
const_pntr & operator+=(const ptrdiff_t n)
flex_arr(size_type begin, size_type end)
void p_clear0()
sizes of each of the pointer arrays 
const_reference back(size_type i1, size_type i2, size_type i3, size_type i4) const 
const_iterator end(size_type i1) const 
n_pointer< T, N-1, C_TYPE, false > value_type
const_iterator end(size_type i1, size_type i2, size_type i3, size_type i4) const 
const_iterator begin() const 
random_access_iterator_tag iterator_category
multi_arr(size_type d1, size_type d2, size_type d3, size_type d4)
multi_arr< bool, 2 >::iterator mb2i
const flex_arr & operator=(const flex_arr &f)
const multi_geom< d, ALLOC > & clone() const 
basic_pntr & operator--()
void state_do(FILE *out, bool lgGet)
reference at(size_type i1, size_type i2, size_type i3, size_type i4)
const_reference at(size_type i1, size_type i2) const 
size_type capacity() const 
flex_arr< double >::iterator fadi
iterator ptr(size_type i1, size_type i2, size_type i3, size_type i4)
const_n_pointer< T, N-1, C_TYPE, true > value_type
void p_setupArray(size_type n1[], size_type n2[], const tree_vec *w, size_type l)
pointer p_pointer(size_type i) const 
n_pointer(T *p, const size_t *st, const tree_vec *v)
multi_arr(size_type d1, size_type d2, size_type d3, size_type d4, size_type d5, size_type d6)
const_iterator ptr(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6) const 
multi_arr< long, 6 >::iterator ml6i
multi_geom< d, ALLOC > p_g
bool operator==(const basic_pntr &t) const 
void alloc(size_type d1, size_type d2)
const_pntr< T, lgBC > const_iterator
iterator ptr(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
void do_restore_state(void *buf, size_t nelem, size_t size, FILE *in, int32 magic)
iterator end(size_type i1, size_type i2, size_type i3)
void alloc(size_type d1, size_type d2, size_type d3, size_type d4)
multi_arr< bool, 3 >::iterator mb3i
iterator p_iterator(size_type i1, size_type i2, size_type i3) const 
const_iterator begin(size_type i1, size_type i2, size_type i3, size_type i4) const 
const indexed_type operator[](size_type i)
ptrdiff_t difference_type
const_n_pointer< T, N-1, ARPA_TYPE, true > value_type
ptrdiff_t difference_type
const T * operator->() const 
iterator p_iterator_bc(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6) const 
multi_arr< double, 5 >::const_iterator md5ci
const pntr operator-(const ptrdiff_t n) const 
multi_arr< double, 5 >::iterator md5i
const T & const_reference
iterator p_iterator(size_type i1, size_type i2, size_type i3, size_type i4) const 
const tree_vec & operator=(const tree_vec &m)
const T & operator*() const 
multi_arr(const multi_geom< d, ALLOC > &g)
reference p_index(size_type i) const 
flex_arr< double >::const_iterator fadci
const_iterator begin(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const 
const_reference front(size_type i1) const 
const pntr< T, lgBC > operator+(const ptrdiff_t n, const pntr< T, lgBC > &t)
reference at(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
const n_pointer< T, d, ALLOC, lgBC > n_ptr()
const_iterator end(size_type i1, size_type i2, size_type i3) const 
const_iterator begin(size_type i1, size_type i2) const 
flex_arr< long >::const_iterator falci
const_pntr & operator-=(const ptrdiff_t n)
const_iterator end() const 
void restore_state(FILE *in)
bool p_lgInbounds(size_type i) const 
multi_arr< realnum, 3 >::iterator mr3i
void dump_state(FILE *out) const 
multi_arr(const multi_arr &m)
size_type nsl[d]
stride for each dimension (only used in C_TYPE layout) 
const_n_pointer(const T *p, const size_t *st, const tree_vec *v)
const multi_geom & operator=(const multi_geom &m)
reference back(size_type i1)
multi_arr(size_type d1, size_type d2, size_type d3, size_type d4, size_type d5)
const_n_pointer(const T *p, const size_t *st, const tree_vec *v)
basic_pntr & operator-=(const ptrdiff_t n)
bool lgInbounds(const size_type n, const size_type index[]) const 
const_reference front() const 
multi_arr< realnum, 4 >::iterator mr4i
tree_vec(const tree_vec &m)
reference back(size_type i1, size_type i2)
n_pointer(T *p, const size_t *st, const tree_vec *v)
reference front(size_type i1, size_type i2, size_type i3)
const_reference back() const 
iterator p_iterator_bc(size_type i1, size_type i2, size_type i3, size_type i4) const 
const_pntr & operator++()
reference at(size_type i1, size_type i2, size_type i3)
multi_arr< double, 4 >::iterator md4i
iterator p_iterator_bc(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const 
iterator begin(size_type i1, size_type i2, size_type i3)
void reserve_recursive(const size_type n, size_type index[])
bool operator>(const basic_pntr &t) const 
multi_arr(size_type d1, size_type d2, size_type d3)
multi_arr< realnum, 2 >::iterator mr2i
T * p_alloc(size_t size) const 
multi_arr< realnum, 4 >::const_iterator mr4ci
iterator end(size_type i1, size_type i2)
void reserve(size_type i1)
multi_arr< bool, 6 >::const_iterator mb6ci
void realloc(size_type end)
iterator begin(size_type i1, size_type i2, size_type i3, size_type i4)
n_pointer< T, N-1, ARPA_TYPE, true > value_type
const_iterator ptr(size_type i1, size_type i2) const 
n_pointer(T *p, const size_t *st=NULL, const tree_vec *v=NULL)
iterator end(size_type i1)
pntr(T *p0, T *p1, T *p2)
iterator p_iterator_bc(size_type i1, size_type i2) const 
multi_arr< double, 2 >::iterator md2i
n_pointer(T *p, const size_t *st, const tree_vec *v=NULL)
n_pointer(T *p, const size_t *st, const tree_vec *v)
static const int32 MA_VERS[ML_TOP]
const_iterator end(size_type i1, size_type i2) const 
multi_arr< long, 5 >::const_iterator ml5ci
void alloc(size_type d1, size_type d2, size_type d3, size_type d4, size_type d5, size_type d6)
const_n_pointer(const T *p, const size_t *st, const tree_vec *v)
multi_arr< double, 6 >::const_iterator md6ci
const_reference at(size_type i1, size_type i2, size_type i3) const 
multi_arr< bool, 4 >::const_iterator mb4ci
const T & const_reference
iterator begin(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
multi_arr< bool, 3 >::const_iterator mb3ci
multi_arr< double, 3 >::const_iterator md3ci
reference front(size_type i1, size_type i2, size_type i3, size_type i4)
T * p_index_checked(const ptrdiff_t n) const 
multi_arr(size_type d1, size_type d2)
const valarray< T > & vals() const 
void reserve(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
flex_arr< long >::iterator fali
const_iterator ptr(size_type i) const 
multi_arr< long, 6 >::const_iterator ml6ci
reference front(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5)
n_pointer< T, N-1, ARPA_TYPE, false > value_type
const_reference at(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5, size_type i6) const 
const_n_pointer(const T *p, const size_t *st, const tree_vec *v=NULL)
multi_arr< double, 6 >::iterator md6i
n_pointer< T, d-1, ALLOC, lgBC > indexed_type
multi_arr< double, 4 >::const_iterator md4ci
void alloc(size_type begin, size_type end)
multi_arr< double, 3 >::iterator md3i
void alloc(size_type index[])
const const_pntr operator-(const ptrdiff_t n) const 
const T & const_reference
void alloc(size_type d1, size_type d2, size_type d3)
void alloc(const multi_geom< d, ALLOC > &g)
void reserve(size_type i1, size_type i2, size_type i3, size_type i4)
const_reference back(size_type i1, size_type i2) const 
tree_vec - a simple class to store the bounds checking information for multi_arr 
reference back(size_type i1, size_type i2, size_type i3, size_type i4)
basic_pntr(const basic_pntr &t)
void restore_state(FILE *in)
flex_arr< bool >::const_iterator fabci
iterator ptr(size_type i1, size_type i2, size_type i3)
bool operator<(const basic_pntr &t) const 
const_n_pointer< T, N-1, C_TYPE, false > value_type
const_reference front(size_type i1, size_type i2, size_type i3, size_type i4, size_type i5) const 
multi_arr< realnum, 6 >::const_iterator mr6ci
const_n_pointer(const T *p, const size_t *st, const tree_vec *v)
flex_arr< bool >::iterator fabi
multi_arr< realnum, 5 >::iterator mr5i
const_n_pointer< T, N-1, ARPA_TYPE, false > value_type
multi_arr< realnum, 5 >::const_iterator mr5ci
void dump_state(FILE *out) const 
multi_arr< bool, 6 >::iterator mb6i
iterator ptr(size_type i)
const multi_arr & operator=(const multi_arr &m)
multi_arr< long, 4 >::iterator ml4i
const const_pntr operator+(const ptrdiff_t n) const 
iterator p_iterator(size_type i) const 
size_type s[d]
allocated size (number of data elements, pointers are not counted) 
const pntr operator+(const ptrdiff_t n) const