astrotypes  0.0
Classes | Public Types | Public Member Functions | Protected Member Functions | List of all members
pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions > Class Template Reference

template classes to specify multiple dimension arrays with explicit dimension types More...

#include <src/cpp/pss/astrotypes/multiarray/MultiArray.h>

Inheritance diagram for pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >:
Inheritance graph

Classes

struct  ConstOperatorSliceType
 provides a template to determine the returned type of an operator[] const More...
 
struct  OperatorSliceType
 provides a template to determine the returned type of an operator[] More...
 

Public Types

typedef BaseT::iterator iterator
 
typedef BaseT::const_iterator const_iterator
 
typedef BaseT::value_type value_type
 
typedef SliceMixin< Slice< false, SelfType, SliceMixin, FirstDimension, OtherDimensions...> > SliceType
 
typedef SliceMixin< Slice< true, SelfType, SliceMixin, FirstDimension, OtherDimensions...> > ConstSliceType
 
typedef SliceType::template OperatorSliceType< FirstDimension >::type ReducedDimensionSliceType
 
typedef ConstSliceType::template ConstOperatorSliceType< FirstDimension >::type ConstReducedDimensionSliceType
 
typedef T & reference_type
 
typedef T const & const_reference_type
 

Public Member Functions

template<typename Dim , typename... Dims>
 MultiArray (DimensionSize< Dim > size, DimensionSize< Dims >...sizes)
 
 MultiArray (MultiArray const &)=default
 copy operator needs to be called explicitly as this is an expensive operation More...
 
template<typename DimensionType , typename Enable = typename std::enable_if< has_dimensions<DimensionType, FirstDimension, OtherDimensions...>::value && !has_exact_dimensions<FirstDimension, OtherDimensions...>::value>::type>
 MultiArray (DimensionType const &)
 initialise and transpose from a group with different memory ordering More...
 
iterator begin ()
 iterators acting over he entire data structure More...
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
const_iterator cbegin () const
 
const_iterator cend () const
 
ReducedDimensionSliceType operator[] (DimensionIndex< FirstDimension > index)
 take a slice of width 1 data at the specified index of the first dimension More...
 
ConstReducedDimensionSliceType operator[] (DimensionIndex< FirstDimension > index) const
 
template<typename Dim >
std::enable_if< has_dimension< MultiArray, Dim >::value &&!std::is_same< Dim, FirstDimension >::value, typename OperatorSliceType< Dim >::type >::type operator[] (DimensionIndex< Dim > const &)
 
template<typename Dim >
std::enable_if< has_dimension< MultiArray, Dim >::value &&!std::is_same< Dim, FirstDimension >::value, typename ConstOperatorSliceType< Dim >::type >::type operator[] (DimensionIndex< Dim > const &) const
 
template<typename Dim >
std::enable_if< std::is_same< Dim, FirstDimension >::value, DimensionSize< FirstDimension > >::type size () const
 return a slice of the specified dimension spanning the index_range provided More...
 
template<typename Dim >
std::enable_if<!std::is_same< Dim, FirstDimension >::value, DimensionSize< Dim > >::type size () const
 
template<typename Dim >
std::enable_if< std::is_same< Dim, FirstDimension >::value, DimensionSize< FirstDimension > >::type dimension () const
 
template<typename Dim >
std::enable_if<!std::is_same< Dim, FirstDimension >::value, DimensionSize< Dim > >::type dimension () const
 
std::size_t data_size () const
 the total size of data in all dimensions More...
 
bool operator== (MultiArray const &) const
 compare data in the two arrays More...
 
bool equal_size (MultiArray const &) const
 return true if the sizes of each dimension are equivalent More...
 
template<typename MultiArrayType , typename DimensionType >
void do_transpose (MultiArrayType &ma, DimensionType const &d)
 
template<typename... Dims>
 MultiArray (typename std::enable_if< arg_helper< FirstDimension, Dims...>::value, bool >::type, DimensionSize< Dims > const &...sizes)
 
template<typename Dim >
std::enable_if< has_dimension< MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions...>, Dim >::value &&!std::is_same< Dim, FirstDimension >::value, typename MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions...>::template ConstOperatorSliceType< Dim >::type >::type operator[] (DimensionIndex< Dim > const &index) const
 
template<typename Dim >
std::enable_if< has_dimension< MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions...>, Dim >::value &&!std::is_same< Dim, FirstDimension >::value, typename MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions...>::template OperatorSliceType< Dim >::type >::type operator[] (DimensionIndex< Dim > const &index)
 
template<typename Dim >
std::enable_if<!std::is_same< Dim, FirstDimension >::value, DimensionSize< Dim > >::type size () const
 
template<typename Dim >
std::enable_if< std::is_same< Dim, FirstDimension >::value, DimensionSize< FirstDimension > >::type size () const
 
template<typename Dim >
std::enable_if<!std::is_same< Dim, FirstDimension >::value, DimensionSize< Dim > >::type dimension () const
 
template<typename Dim >
std::enable_if< std::is_same< Dim, FirstDimension >::value, DimensionSize< FirstDimension > >::type dimension () const
 
template<typename Dim , typename... Dims>
std::enable_if<!arg_helper< FirstDimension, Dim, Dims...>::value, void >::type do_resize (std::size_t total, DimensionSize< Dim > size, DimensionSize< Dims >...sizes)
 
template<typename Dim , typename... Dims>
std::enable_if<!arg_helper< FirstDimension, Dim, Dims...>::value, void >::type do_resize (std::size_t total, DimensionSize< Dim > size, DimensionSize< Dims >...sizes, T const &value)
 
template<typename Dim , typename... Dims>
std::enable_if< arg_helper< FirstDimension, Dim, Dims...>::value, void >::type do_resize (std::size_t total, DimensionSize< Dim > size, DimensionSize< Dims >...sizes)
 
template<typename Dim , typename... Dims>
std::enable_if< arg_helper< FirstDimension, Dim, Dims...>::value, void >::type do_resize (std::size_t total, DimensionSize< Dim > size, DimensionSize< Dims >...sizes, T const &value)
 

Protected Member Functions

template<typename... Dims>
 MultiArray (typename std::enable_if< arg_helper< FirstDimension, Dims...>::value, bool >::type disable_resize_tag, DimensionSize< Dims > const &...)
 
template<typename DimensionType >
 MultiArray (typename std::enable_if< has_dimensions< DimensionType, FirstDimension, OtherDimensions...>::value, bool >::type disable_transpose_tag, DimensionType const &d)
 
template<typename Dimension , typename... Dims>
std::enable_if<!arg_helper< FirstDimension, Dimension, Dims...>::value, void >::type do_resize (std::size_t total, DimensionSize< Dimension > size, DimensionSize< Dims >...sizes)
 
template<typename Dimension , typename... Dims>
std::enable_if<!arg_helper< FirstDimension, Dimension, Dims...>::value, void >::type do_resize (std::size_t total, DimensionSize< Dimension > size, DimensionSize< Dims >...sizes, T const &value)
 
template<typename Dimension , typename... Dims>
std::enable_if< arg_helper< FirstDimension, Dimension, Dims...>::value, void >::type do_resize (std::size_t total, DimensionSize< Dimension > size, DimensionSize< Dims >...sizes)
 
template<typename Dimension , typename... Dims>
std::enable_if< arg_helper< FirstDimension, Dimension, Dims...>::value, void >::type do_resize (std::size_t total, DimensionSize< Dimension > size, DimensionSize< Dims >...sizes, T const &value)
 
void do_resize (std::size_t total)
 
void do_resize (std::size_t total, T const &value)
 
template<typename SelfSlice , typename OtherSlice >
void do_transpose (SelfSlice &, OtherSlice const &)
 

Detailed Description

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
class pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >

template classes to specify multiple dimension arrays with explicit dimension types

Template Parameters
Tthe type of object to be stored in the array (e.g. float, int, Stokes, etc)

Definition at line 42 of file MultiArray.h.

Member Typedef Documentation

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
typedef BaseT::const_iterator pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::const_iterator

Definition at line 50 of file MultiArray.h.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
typedef T const& pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::const_reference_type

Definition at line 76 of file MultiArray.h.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
typedef ConstSliceType::template ConstOperatorSliceType<FirstDimension>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::ConstReducedDimensionSliceType

Definition at line 73 of file MultiArray.h.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
typedef SliceMixin<Slice<true, SelfType, SliceMixin, FirstDimension, OtherDimensions...> > pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::ConstSliceType

Definition at line 71 of file MultiArray.h.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
typedef BaseT::iterator pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::iterator

Definition at line 49 of file MultiArray.h.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
typedef SliceType::template OperatorSliceType<FirstDimension>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::ReducedDimensionSliceType

Definition at line 72 of file MultiArray.h.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
typedef T& pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::reference_type

Definition at line 75 of file MultiArray.h.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
typedef SliceMixin<Slice<false, SelfType, SliceMixin, FirstDimension, OtherDimensions...> > pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::SliceType

Definition at line 68 of file MultiArray.h.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
typedef BaseT::value_type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::value_type

Definition at line 51 of file MultiArray.h.

Constructor & Destructor Documentation

template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
template<typename Dim , typename... Dims>
pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::MultiArray ( DimensionSize< Dim >  size,
DimensionSize< Dims >...  sizes 
)

Definition at line 88 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::MultiArray ( MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions > const &  )
explicitdefault

copy operator needs to be called explicitly as this is an expensive operation

template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
template<typename DimensionType , typename Enable>
pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::MultiArray ( DimensionType const &  d)
explicit

initialise and transpose from a group with different memory ordering

Definition at line 97 of file MultiArray.cpp.

Here is the call graph for this function:

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename... Dims>
pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::MultiArray ( typename std::enable_if< arg_helper< FirstDimension, Dims...>::value, bool >::type  disable_resize_tag,
DimensionSize< Dims > const &  ... 
)
protected
template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension, typename... Dimensions>
template<typename DimensionType>
pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::MultiArray ( typename std::enable_if< has_dimensions< DimensionType, FirstDimension, Dimensions...>::value, bool >::type  disable_transpose_tag,
DimensionType const &  d 
)
protected

Definition at line 107 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename... Dims>
pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::MultiArray ( typename std::enable_if< arg_helper< FirstDimension, Dims...>::value, bool >::type  ,
DimensionSize< Dims > const &...  sizes 
)

Definition at line 130 of file MultiArray.cpp.

Member Function Documentation

template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions...>::iterator pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::begin ( )
inline

iterators acting over he entire data structure

useful for e.g std::copy of the entire structure without inspection

Definition at line 139 of file MultiArray.cpp.

template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions...>::const_iterator pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::begin ( ) const
inline

Definition at line 145 of file MultiArray.cpp.

template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions...>::const_iterator pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::cbegin ( ) const
inline

Definition at line 151 of file MultiArray.cpp.

template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions...>::const_iterator pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::cend ( ) const
inline

Definition at line 169 of file MultiArray.cpp.

template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
std::size_t pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::data_size ( ) const

the total size of data in all dimensions

Definition at line 313 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim >
std::enable_if<std::is_same<Dim, FirstDimension>::value, DimensionSize<FirstDimension> >::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::dimension ( ) const
template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim >
std::enable_if<!std::is_same<Dim, FirstDimension>::value, DimensionSize<Dim> >::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::dimension ( ) const
template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim >
std::enable_if<!std::is_same<Dim, FirstDimension>::value, DimensionSize<Dim> >::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::dimension ( ) const

Definition at line 253 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim >
std::enable_if<std::is_same<Dim, FirstDimension>::value, DimensionSize<FirstDimension> >::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::dimension ( ) const

Definition at line 261 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dimension , typename... Dims>
std::enable_if<!arg_helper<FirstDimension, Dimension, Dims...>::value, void>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::do_resize ( std::size_t  total,
DimensionSize< Dimension >  size,
DimensionSize< Dims >...  sizes 
)
protected
template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dimension , typename... Dims>
std::enable_if<!arg_helper<FirstDimension, Dimension, Dims...>::value, void>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::do_resize ( std::size_t  total,
DimensionSize< Dimension >  size,
DimensionSize< Dims >...  sizes,
T const &  value 
)
protected
template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dimension , typename... Dims>
std::enable_if<arg_helper<FirstDimension, Dimension, Dims...>::value, void>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::do_resize ( std::size_t  total,
DimensionSize< Dimension >  size,
DimensionSize< Dims >...  sizes 
)
protected
template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dimension , typename... Dims>
std::enable_if<arg_helper<FirstDimension, Dimension, Dims...>::value, void>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::do_resize ( std::size_t  total,
DimensionSize< Dimension >  size,
DimensionSize< Dims >...  sizes,
T const &  value 
)
protected
template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
void pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::do_resize ( std::size_t  total)
protected

Definition at line 301 of file MultiArray.cpp.

template<typename Alloc , typename T, template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
void pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::do_resize ( std::size_t  total,
T const &  value 
)
protected

Definition at line 307 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim , typename... Dims>
std::enable_if<!arg_helper<FirstDimension, Dim, Dims...>::value, void>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::do_resize ( std::size_t  total,
DimensionSize< Dim >  size,
DimensionSize< Dims >...  sizes 
)

Definition at line 269 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim , typename... Dims>
std::enable_if<!arg_helper<FirstDimension, Dim, Dims...>::value, void>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::do_resize ( std::size_t  total,
DimensionSize< Dim >  size,
DimensionSize< Dims >...  sizes,
T const &  value 
)

Definition at line 277 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim , typename... Dims>
std::enable_if<arg_helper<FirstDimension, Dim, Dims...>::value, void>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::do_resize ( std::size_t  total,
DimensionSize< Dim >  size,
DimensionSize< Dims >...  sizes 
)

Definition at line 285 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim , typename... Dims>
std::enable_if<arg_helper<FirstDimension, Dim, Dims...>::value, void>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::do_resize ( std::size_t  total,
DimensionSize< Dim >  size,
DimensionSize< Dims >...  sizes,
T const &  value 
)

Definition at line 294 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename MultiArrayType , typename DimensionType >
void pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::do_transpose ( MultiArrayType &  ma,
DimensionType const &  d 
)

Definition at line 118 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename SelfSlice , typename OtherSlice >
void pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::do_transpose ( SelfSlice &  ,
OtherSlice const &   
)
protected
template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions...>::iterator pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::end ( )
inline

Definition at line 157 of file MultiArray.cpp.

template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions...>::const_iterator pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::end ( ) const
inline

Definition at line 163 of file MultiArray.cpp.

template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
bool pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::equal_size ( MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions > const &  o) const

return true if the sizes of each dimension are equivalent

Definition at line 319 of file MultiArray.cpp.

Here is the call graph for this function:

template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension , typename... Dimensions>
bool pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::operator== ( MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions > const &  o) const

compare data in the two arrays

Definition at line 325 of file MultiArray.cpp.

Here is the call graph for this function:

template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension, typename... Dimensions>
MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions...>::ReducedDimensionSliceType pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::operator[] ( DimensionIndex< FirstDimension >  index)

take a slice of width 1 data at the specified index of the first dimension

This can be used to access elements in a similar way to c style arrays.

MultiArray<int, DimA, DimB> my_multi_array(...);
for(DimensionIndex<DimA> i(0); i < my_multi_array.size<DimA>(); ++i)
{
for(DimensionIndex<DimB> j(0); j < my_multi_array.size<DimB>(); ++j)
{
my_multi_array[i][j] = 10;
}
}

Definition at line 175 of file MultiArray.cpp.

template<typename Alloc , typename T , template< typename > class SliceMixin, typename FirstDimension, typename... Dimensions>
MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions...>::ConstReducedDimensionSliceType pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, Dimensions >::operator[] ( DimensionIndex< FirstDimension >  index) const

Definition at line 182 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim >
std::enable_if<has_dimension<MultiArray, Dim>::value && !std::is_same<Dim, FirstDimension>::value , typename OperatorSliceType<Dim>::type>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::operator[] ( DimensionIndex< Dim > const &  )
template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim >
std::enable_if<has_dimension<MultiArray, Dim>::value && !std::is_same<Dim, FirstDimension>::value , typename ConstOperatorSliceType<Dim>::type>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::operator[] ( DimensionIndex< Dim > const &  ) const
template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim >
std::enable_if<has_dimension<MultiArray<Alloc, T, SliceMixin, FirstDimension, Dimensions...>, Dim>::value&& !std::is_same<Dim, FirstDimension>::value, typename MultiArray<Alloc, T, SliceMixin, FirstDimension, Dimensions...>::template ConstOperatorSliceType<Dim>::type>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::operator[] ( DimensionIndex< Dim > const &  index) const

Definition at line 192 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim >
std::enable_if<has_dimension<MultiArray<Alloc, T, SliceMixin, FirstDimension, Dimensions...>, Dim>::value&& !std::is_same<Dim, FirstDimension>::value, typename MultiArray<Alloc, T, SliceMixin, FirstDimension, Dimensions...>::template OperatorSliceType<Dim>::type>::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::operator[] ( DimensionIndex< Dim > const &  index)

Definition at line 201 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim >
std::enable_if<std::is_same<Dim, FirstDimension>::value, DimensionSize<FirstDimension> >::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::size ( ) const

return a slice of the specified dimension spanning the index_range provided

no bonuds checking is performed. Undefined behaviour can result from requests for a slice outside the limits. An example to test bounds using the trim method:

DimensionSize<A> a_size(10);
DimensionSize<B> b_size(100);
MultiArray<int, A, B> ma(a_size, b_size);
// this span starts inside the array but extends beyond the bounds
DimensionSpan<A> span(DimensionIndex<A>(8), DimensionSize<A>(10));
// adjust the span so that it fits in bounds
span.trim(ma.template dimension<A>());
if(span.span() > DimensionSize<A>(0)) {
// the span is valid and adjusted to fit.
}
@endocde
/
template<typename Dim, typename... Dims>
SliceType slice(DimensionSpan<Dim> const& range, DimensionSpan<Dims> const&...);
template<typename Dim, typename... Dims>
ConstSliceType slice(DimensionSpan<Dim> const& range, DimensionSpan<Dims> const&...) const;
template<typename... Dimensions>
void resize(DimensionSize<Dimensions>... size);
template<typename Dim, typename... Dimensions>
void resize(DimensionSize<Dim>, DimensionSize<Dimensions>... size, T const& value);
template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim >
std::enable_if<!std::is_same<Dim, FirstDimension>::value, DimensionSize<Dim> >::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::size ( ) const
template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim >
std::enable_if<!std::is_same<Dim, FirstDimension>::value, DimensionSize<Dim> >::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::size ( ) const

Definition at line 237 of file MultiArray.cpp.

template<typename Alloc, typename T, template< typename > class SliceMixin, typename FirstDimension, typename... OtherDimensions>
template<typename Dim >
std::enable_if<std::is_same<Dim, FirstDimension>::value, DimensionSize<FirstDimension> >::type pss::astrotypes::MultiArray< Alloc, T, SliceMixin, FirstDimension, OtherDimensions >::size ( ) const

Definition at line 245 of file MultiArray.cpp.