51 typedef std::vector<T> SizeVec;
62 explicit BaseDimensions(
const T& t )
66 BaseDimensions(
const BaseDimensions © )
67 : m_vector( copy.m_vector )
71 BaseDimensions(
const BaseDimensions<Y> © )
73 m_vector.resize( copy.rank() );
74 for (
size_t i = 0; i < copy.rank(); ++i )
77 m_vector[i] =
static_cast<T
>( val );
81 BaseDimensions& operator=(
const BaseDimensions © )
83 m_vector = copy.m_vector;
88 BaseDimensions& operator=(
const BaseDimensions<Y> © )
90 m_vector.resize( copy.rank() );
91 for (
size_t i = 0; i < copy.rank(); ++i )
94 m_vector[i] =
static_cast<T
>( val );
99 size_t rank()
const {
return m_vector.size(); }
100 void setRank(
size_t r )
102 size_t oldSize = m_vector.size();
103 m_vector.resize( r );
104 for (
size_t s = oldSize; s < r; ++s )
106 m_vector[s] = ( T )0;
110 T &operator[](
size_t i )
111 {
return m_vector[i]; }
113 const T &operator[](
size_t i )
const
114 {
return m_vector[i]; }
116 T *rootPtr() {
return ( T * )( &( m_vector.front() ) ); }
117 const T *rootPtr()
const
118 {
return (
const T * )( &( m_vector.front() ) ); }
120 size_t numPoints()
const
122 if ( m_vector.size() == 0 ) {
return 0; }
126 for (
size_t i = 0 ; i < m_vector.size() ; i++ )
128 npoints *= (size_t)m_vector[i];