astrotypes  0.0
Classes | Public Types | Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Friends | List of all members
pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions > Class Template Reference

Representation of a Slice through a Data Array. More...

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

Classes

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

Public Types

typedef std::conditional< is_const, const ParentT, ParentT >::type Parent
 
typedef SliceIterator< SliceMixin< SelfType >, is_const > iterator
 
typedef SliceIterator< SliceMixin< SelfType >, true > const_iterator
 
typedef SliceMixin< Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions...> > SliceType
 
typedef SliceMixin< BaseTReducedSliceType
 
typedef SliceMixin< Slice< true, SliceTraitsT, SliceMixin, Dimension, Dimensions...> > ConstSliceType
 
typedef SliceMixin< Slice< true, InternalSliceTraits< SliceTraitsT, Dimension >, SliceMixin, Dimensions...> > ConstReducedSliceType
 

Public Member Functions

template<typename Dim , typename... Dims>
 Slice (typename std::enable_if< arg_helper< Dimension, Dim, Dims...>::value, Parent & >::type parent, DimensionSpan< Dim > const &, DimensionSpan< Dims > const &...)
 
template<typename Dim , typename... Dims>
 Slice (typename std::enable_if<!arg_helper< Dimension, Dim, Dims...>::value, Parent & >::type parent, DimensionSpan< Dim > const &, DimensionSpan< Dims > const &...)
 
std::size_t data_size () const
 the total number of data members in this slice More...
 
template<typename Dim >
std::enable_if< std::is_same< Dim, Dimension >::value, DimensionSize< Dimension > >::type size () const
 
template<typename Dim >
std::enable_if<!std::is_same< Dim, Dimension >::value, DimensionSize< Dim > >::type size () const
 
template<typename Dim >
std::enable_if< std::is_same< Dim, Dimension >::value, DimensionSize< Dimension > >::type dimension () const
 
template<typename Dim >
std::enable_if<!std::is_same< Dim, Dimension >::value, DimensionSize< Dim > >::type dimension () const
 
OperatorSliceType< Dimension >::type operator[] (DimensionIndex< Dimension >)
 Take a slice in the specified dimension with a span of 1. More...
 
ConstOperatorSliceType< Dimension >::type operator[] (DimensionIndex< Dimension >) const
 
template<typename Dim >
std::enable_if< arg_helper< Dim, Dimensions...>::value &&!std::is_same< Dim, Dimension >::value, typename ConstOperatorSliceType< Dim >::type >::type operator[] (DimensionIndex< Dim > const &) const
 
template<typename Dim >
std::enable_if< arg_helper< Dim, Dimensions...>::value &&!std::is_same< Dim, Dimension >::value, typename OperatorSliceType< Dim >::type >::type operator[] (DimensionIndex< Dim > const &)
 
template<typename... Dims>
std::enable_if< arg_helper< Dimension, Dims...>::value, SliceType >::type slice (DimensionSpan< Dims > const &...spans)
 Take a sub-slice from this slice pass a DimensionSpan<Dimension> object for each dimension you wish to restrict. Span indexes are relative to Slice boundary, not the parent. More...
 
template<typename... Dims>
std::enable_if<!arg_helper< Dimension, Dims...>::value, SliceType >::type slice (DimensionSpan< Dims > const &...spans)
 
template<typename... Dims>
std::enable_if< arg_helper< Dimension, Dims...>::value, Slice< true, SliceTraitsT, SliceMixin, Dimension, Dimensions...> >::type slice (DimensionSpan< Dims > const &...spans) const
 
template<typename... Dims>
std::enable_if<!arg_helper< Dimension, Dims...>::value, Slice< true, SliceTraitsT, SliceMixin, Dimension, Dimensions...> >::type slice (DimensionSpan< Dims > const &...spans) const
 
iterator begin ()
 iterator pointing to the first element in the slice More...
 
const_iterator begin () const
 
const_iterator cbegin () const
 
iterator end ()
 iterator pointing to just after the last element More...
 
const_iterator end () const
 
const_iterator cend () const
 
Parentparent () const
 return refernce to the parent object the Slice is based on More...
 
template<bool const_type>
bool operator== (Slice< const_type, SliceTraitsT, SliceMixin, Dimension, Dimensions...> const &) const
 compare two arrays More...
 
template<typename Dim, typename... Dims>
 Slice (typename std::enable_if< arg_helper< Dimension, Dim, Dims...>::value, Parent & >::type parent, DimensionSpan< Dim > const &span, DimensionSpan< Dims > const &...spans)
 
template<typename Dim, typename... Dims>
 Slice (typename std::enable_if<!arg_helper< Dimension, Dim, Dims...>::value, Parent & >::type parent, DimensionSpan< Dim > const &span, DimensionSpan< Dims > const &...spans)
 
template<typename Dim >
std::enable_if< std::is_same< Dim, Dimension >::value, DimensionSize< Dimension > >::type size () const
 
template<typename Dim >
std::enable_if<!std::is_same< Dim, Dimension >::value, DimensionSize< Dim > >::type size () const
 
template<typename Dim >
std::enable_if< std::is_same< Dim, Dimension >::value, DimensionSize< Dimension > >::type dimension () const
 
template<typename Dim >
std::enable_if<!std::is_same< Dim, Dimension >::value, DimensionSize< Dim > >::type dimension () const
 
template<typename Dim >
std::enable_if< arg_helper< Dim, Dimensions...>::value &&!std::is_same< Dim, Dimension >::value, typename Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::template OperatorSliceType< Dim >::type >::type operator[] (DimensionIndex< Dim > const &index)
 
template<typename Dim >
std::enable_if< arg_helper< Dim, Dimensions...>::value &&!std::is_same< Dim, Dimension >::value, typename Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::template ConstOperatorSliceType< Dim >::type >::type operator[] (DimensionIndex< Dim > const &index) const
 
template<typename... Dims>
std::enable_if< arg_helper< Dimension, Dims...>::value, typename Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::SliceType >::type slice (DimensionSpan< Dims > const &...spans)
 
template<typename... Dims>
std::enable_if<!arg_helper< Dimension, Dims...>::value, typename Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::SliceType >::type slice (DimensionSpan< Dims > const &...spans)
 
template<typename... Dims>
std::enable_if< arg_helper< Dimension, Dims...>::value, Slice< true, Parent, SliceMixin, Dimension, Dimensions...> >::type slice (DimensionSpan< Dims > const &...spans) const
 
template<typename... Dims>
std::enable_if<!arg_helper< Dimension, Dims...>::value, Slice< true, Parent, SliceMixin, Dimension, Dimensions...> >::type slice (DimensionSpan< Dims > const &...spans) const
 

Static Public Attributes

static constexpr std::size_t rank = 1 + sizeof...(Dimensions)
 

Protected Types

typedef SliceTraitsHelper< SliceTraitsT >::ExcludeTuple ExcludeTuple
 
typedef std::tuple< Dimension, Dimensions...> DimensionTuple
 
typedef SliceIterator< SelfType, is_const > impl_iterator
 
typedef SliceIterator< SelfType, true > impl_const_iterator
 

Protected Member Functions

template<typename IteratorT >
bool increment_it (IteratorT &current, SlicePosition< rank > &pos) const
 
template<typename IteratorDifferenceT >
IteratorDifferenceT diff_it (IteratorDifferenceT const &diff) const
 
std::size_t contiguous_span () const
 
std::size_t base_span () const
 
std::size_t diff_base_span () const
 
parent_iterator const & base_ptr () const
 
parent_iterator & base_ptr ()
 
parent_iterator const & offset (parent_iterator const &)
 
template<typename... Dims>
 Slice (internal_construct_tag const &, typename std::enable_if< arg_helper< Dimension, Dims...>::value, Parent & >::type parent, DimensionSpan< Dims > const &...spans)
 
template<typename... Dims>
 Slice (internal_construct_tag const &, typename std::enable_if<!arg_helper< Dimension, Dims...>::value, Parent & >::type parent, DimensionSpan< Dims > const &...spans)
 
template<typename... Dims>
 Slice (copy_resize_construct_tag const &, typename std::enable_if<!arg_helper< Dimension, Dims...>::value, Slice >::type const &copy, DimensionSpan< Dims > const &...spans)
 
template<typename... Dims>
 Slice (copy_resize_construct_base_tag const &, typename std::enable_if<!arg_helper< Dimension, Dims...>::value, Slice >::type const &copy, DimensionSpan< Dims > const &...spans)
 
template<typename... Dims>
 Slice (copy_resize_construct_tag const &, typename std::enable_if< arg_helper< Dimension, Dims...>::value, Slice >::type const &copy, DimensionSpan< Dims > const &...spans)
 
template<typename... Dims>
 Slice (copy_resize_construct_base_tag const &, typename std::enable_if< arg_helper< Dimension, Dims...>::value, Slice >::type const &copy, DimensionSpan< Dims > const &...spans)
 
SelfTypeoperator+= (std::size_t n)
 
SelfTypeoperator+= (DimensionSize< Dimension > n)
 
impl_iterator impl_begin ()
 iterator pointing to the first element in the slice More...
 
impl_const_iterator impl_begin () const
 
impl_const_iterator impl_cbegin () const
 
impl_iterator impl_end ()
 iterator pointing to just after the last element More...
 
impl_const_iterator impl_end () const
 
impl_const_iterator impl_cend () const
 

Friends

template<bool , typename P , template< typename > class, typename D , typename... Ds>
class Slice
 

Detailed Description

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
class pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >

Representation of a Slice through a Data Array.

Template Parameters
ParnetTthe data structure that the slice will be based on
is_consttrue if the ParentT is const, false otherwise
SliceMixinA template wrapper class around a slice that allows you to propagate a custom interface to any slice to be consistent with your main data structure interface.

Definition at line 105 of file Slice.h.

Member Typedef Documentation

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
typedef SliceIterator<SliceMixin<SelfType>, true> pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::const_iterator

Definition at line 132 of file Slice.h.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
typedef SliceMixin<Slice<true, InternalSliceTraits<SliceTraitsT, Dimension>, SliceMixin, Dimensions...> > pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::ConstReducedSliceType

Definition at line 136 of file Slice.h.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
typedef SliceMixin<Slice<true, SliceTraitsT, SliceMixin, Dimension, Dimensions...> > pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::ConstSliceType

Definition at line 135 of file Slice.h.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
typedef std::tuple<Dimension, Dimensions...> pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::DimensionTuple
protected

Definition at line 118 of file Slice.h.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
typedef SliceTraitsHelper<SliceTraitsT>::ExcludeTuple pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::ExcludeTuple
protected

Definition at line 117 of file Slice.h.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
typedef SliceIterator<SelfType, true> pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::impl_const_iterator
protected

Definition at line 258 of file Slice.h.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
typedef SliceIterator<SelfType, is_const> pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::impl_iterator
protected

Definition at line 257 of file Slice.h.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
typedef SliceIterator<SliceMixin<SelfType>, is_const> pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::iterator

Definition at line 131 of file Slice.h.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
typedef std::conditional<is_const, const ParentT, ParentT>::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::Parent

Definition at line 128 of file Slice.h.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
typedef SliceMixin<BaseT> pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::ReducedSliceType

Definition at line 134 of file Slice.h.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
typedef SliceMixin<Slice<is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions...> > pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::SliceType

Definition at line 133 of file Slice.h.

Constructor & Destructor Documentation

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim , typename... Dims>
pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::Slice ( typename std::enable_if< arg_helper< Dimension, Dim, Dims...>::value, Parent & >::type  parent,
DimensionSpan< Dim > const &  ,
DimensionSpan< Dims > const &  ... 
)
template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim , typename... Dims>
pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::Slice ( typename std::enable_if<!arg_helper< Dimension, Dim, Dims...>::value, Parent & >::type  parent,
DimensionSpan< Dim > const &  ,
DimensionSpan< Dims > const &  ... 
)
template<bool is_const, typename SliceTraitsT , template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::Slice ( internal_construct_tag const &  ,
typename std::enable_if< arg_helper< Dimension, Dims...>::value, Parent & >::type  parent,
DimensionSpan< Dims > const &...  spans 
)
protected

Definition at line 253 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT , template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::Slice ( internal_construct_tag const &  ,
typename std::enable_if<!arg_helper< Dimension, Dims...>::value, Parent & >::type  parent,
DimensionSpan< Dims > const &...  spans 
)
protected

Definition at line 264 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::Slice ( copy_resize_construct_tag const &  ,
typename std::enable_if<!arg_helper< Dimension, Dims...>::value, Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions > >::type const &  copy,
DimensionSpan< Dims > const &...  spans 
)
protected

Definition at line 196 of file Slice.cpp.

Here is the call graph for this function:

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::Slice ( copy_resize_construct_base_tag const &  ,
typename std::enable_if<!arg_helper< Dimension, Dims...>::value, Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions > >::type const &  copy,
DimensionSpan< Dims > const &...  spans 
)
protected

Definition at line 210 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::Slice ( copy_resize_construct_tag const &  ,
typename std::enable_if< arg_helper< Dimension, Dims...>::value, Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions > >::type const &  copy,
DimensionSpan< Dims > const &...  spans 
)
protected

Definition at line 223 of file Slice.cpp.

Here is the call graph for this function:

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::Slice ( copy_resize_construct_base_tag const &  ,
typename std::enable_if< arg_helper< Dimension, Dims...>::value, Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions > >::type const &  copy,
DimensionSpan< Dims > const &...  spans 
)
protected

Definition at line 241 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim, typename... Dims>
pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::Slice ( typename std::enable_if< arg_helper< Dimension, Dim, Dims...>::value, Parent & >::type  parent,
DimensionSpan< Dim > const &  span,
DimensionSpan< Dims > const &...  spans 
)

Definition at line 167 of file Slice.cpp.

Here is the call graph for this function:

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim, typename... Dims>
pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::Slice ( typename std::enable_if<!arg_helper< Dimension, Dim, Dims...>::value, Parent & >::type  parent,
DimensionSpan< Dim > const &  span,
DimensionSpan< Dims > const &...  spans 
)

Definition at line 181 of file Slice.cpp.

Here is the call graph for this function:

Member Function Documentation

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::parent_iterator const & pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::base_ptr ( ) const
protected

Definition at line 305 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::parent_iterator & pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::base_ptr ( )
protected

Definition at line 299 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
std::size_t pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::base_span ( ) const
protected

Definition at line 281 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::iterator pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::begin ( )

iterator pointing to the first element in the slice

Definition at line 437 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::const_iterator pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::begin ( ) const

Definition at line 443 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::const_iterator pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::cbegin ( ) const

Definition at line 449 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::const_iterator pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::cend ( ) const

Definition at line 467 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
std::size_t pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::contiguous_span ( ) const
protected

Definition at line 293 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
std::size_t pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::data_size ( ) const

the total number of data members in this slice

Definition at line 311 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
std::size_t pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::diff_base_span ( ) const
protected

Definition at line 287 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
template<typename IteratorDifferenceT >
IteratorDifferenceT pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::diff_it ( IteratorDifferenceT const &  diff) const
protected

Definition at line 534 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim >
std::enable_if<std::is_same<Dim, Dimension>::value, DimensionSize<Dimension> >::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::dimension ( ) const
template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim >
std::enable_if<!std::is_same<Dim, Dimension>::value, DimensionSize<Dim> >::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::dimension ( ) const
template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim >
std::enable_if<std::is_same<Dim, Dimension>::value, DimensionSize<Dimension> >::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::dimension ( ) const

Definition at line 335 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim >
std::enable_if<!std::is_same<Dim, Dimension>::value, DimensionSize<Dim> >::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::dimension ( ) const

Definition at line 343 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::iterator pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::end ( )

iterator pointing to just after the last element

Definition at line 455 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::const_iterator pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::end ( ) const

Definition at line 461 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::impl_iterator pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::impl_begin ( )
protected

iterator pointing to the first element in the slice

Definition at line 479 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::impl_const_iterator pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::impl_begin ( ) const
protected

Definition at line 485 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::impl_const_iterator pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::impl_cbegin ( ) const
protected

Definition at line 491 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::impl_const_iterator pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::impl_cend ( ) const
protected

Definition at line 509 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::impl_iterator pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::impl_end ( )
protected

iterator pointing to just after the last element

Definition at line 497 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::impl_const_iterator pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::impl_end ( ) const
protected

Definition at line 503 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
template<typename IteratorT >
bool pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::increment_it ( IteratorT &  current,
SlicePosition< rank > &  pos 
) const
protected

Definition at line 516 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::parent_iterator const & pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::offset ( parent_iterator const &  it)
protected

Definition at line 274 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...> & pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::operator+= ( std::size_t  n)
protected

Definition at line 388 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...> & pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::operator+= ( DimensionSize< Dimension >  n)
protected

Definition at line 396 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<bool const_type>
bool pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::operator== ( Slice< const_type, SliceTraitsT, SliceMixin, Dimension, Dimensions...> const &  s) const

compare two arrays

Definition at line 546 of file Slice.cpp.

Here is the call graph for this function:

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::template OperatorSliceType< Dimension >::type pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::operator[] ( DimensionIndex< Dimension >  offset)

Take a slice in the specified dimension with a span of 1.

Definition at line 350 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::template ConstOperatorSliceType< Dimension >::type pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::operator[] ( DimensionIndex< Dimension >  offset) const

Definition at line 358 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim >
std::enable_if<arg_helper<Dim, Dimensions...>::value && !std::is_same<Dim, Dimension>::value, typename ConstOperatorSliceType<Dim>::type>::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::operator[] ( DimensionIndex< Dim > const &  ) const
template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim >
std::enable_if<arg_helper<Dim, Dimensions...>::value && !std::is_same<Dim, Dimension>::value, typename OperatorSliceType<Dim>::type>::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::operator[] ( DimensionIndex< Dim > const &  )
template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim >
std::enable_if<arg_helper<Dim, Dimensions...>::value&& !std::is_same<Dim, Dimension>::value, typename Slice<is_const, Parent , SliceMixin, Dimension, Dimensions...>::template OperatorSliceType<Dim>::type>::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::operator[] ( DimensionIndex< Dim > const &  index)

Definition at line 369 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim >
std::enable_if<arg_helper<Dim, Dimensions...>::value&& !std::is_same<Dim, Dimension>::value, typename Slice<is_const, Parent , SliceMixin, Dimension, Dimensions...>::template ConstOperatorSliceType<Dim>::type>::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::operator[] ( DimensionIndex< Dim > const &  index) const

Definition at line 379 of file Slice.cpp.

template<bool is_const, typename Parent , template< typename > class SliceMixin, typename Dimension , typename... Dimensions>
Slice< is_const, Parent, SliceMixin, Dimension, Dimensions...>::Parent & pss::astrotypes::Slice< is_const, Parent, SliceMixin, Dimension, Dimensions >::parent ( ) const
inline

return refernce to the parent object the Slice is based on

Definition at line 473 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim >
std::enable_if<std::is_same<Dim, Dimension>::value, DimensionSize<Dimension> >::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::size ( ) const

@ brief return the size of the slice in the specified dimension

Slice<DimesionA, DimensionB> slice(...some initialisers...);
DimensionSize<DimensionA> size_of_A = slice.size<DimensionA>();
DimensionSize<DimensionB> size_of_B = slice.size<DimensionB>();
// note you can remove the dimension tagging on the DimesionSize
// objects for compatibilty with less strongly types libs
// with a static_cast
std::size_t size_A_as_size_t = static_cast<std::size_t>(size_of_A);
 If you intend to inherit from this class you may need to call this method with the
 template keyword.
 e,g,
slice.template size<DimensionA>();
template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim >
std::enable_if<!std::is_same<Dim, Dimension>::value, DimensionSize<Dim> >::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::size ( ) const
template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim >
std::enable_if<std::is_same<Dim, Dimension>::value, DimensionSize<Dimension> >::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::size ( ) const

Definition at line 319 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename Dim >
std::enable_if<!std::is_same<Dim, Dimension>::value, DimensionSize<Dim> >::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::size ( ) const

Definition at line 327 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
std::enable_if<arg_helper<Dimension, Dims...>::value, SliceType>::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::slice ( DimensionSpan< Dims > const &...  spans)

Take a sub-slice from this slice pass a DimensionSpan<Dimension> object for each dimension you wish to restrict. Span indexes are relative to Slice boundary, not the parent.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
std::enable_if<!arg_helper<Dimension, Dims...>::value, SliceType>::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::slice ( DimensionSpan< Dims > const &...  spans)
template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
std::enable_if<arg_helper<Dimension, Dims...>::value, Slice<true, SliceTraitsT, SliceMixin, Dimension, Dimensions...> >::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::slice ( DimensionSpan< Dims > const &...  spans) const
template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
std::enable_if<!arg_helper<Dimension, Dims...>::value, Slice<true, SliceTraitsT, SliceMixin, Dimension, Dimensions...> >::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::slice ( DimensionSpan< Dims > const &...  spans) const
template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
std::enable_if<arg_helper<Dimension, Dims...>::value, typename Slice<is_const, Parent, SliceMixin, Dimension, Dimensions...>::SliceType>::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::slice ( DimensionSpan< Dims > const &...  spans)

Definition at line 406 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
std::enable_if<!arg_helper<Dimension, Dims...>::value, typename Slice<is_const, Parent, SliceMixin, Dimension, Dimensions...>::SliceType>::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::slice ( DimensionSpan< Dims > const &...  spans)

Definition at line 414 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
std::enable_if<arg_helper<Dimension, Dims...>::value, Slice<true, Parent, SliceMixin, Dimension, Dimensions...> >::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::slice ( DimensionSpan< Dims > const &...  spans) const

Definition at line 423 of file Slice.cpp.

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<typename... Dims>
std::enable_if<!arg_helper<Dimension, Dims...>::value, Slice<true, Parent, SliceMixin, Dimension, Dimensions...> >::type pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::slice ( DimensionSpan< Dims > const &...  spans) const

Definition at line 431 of file Slice.cpp.

Friends And Related Function Documentation

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
template<bool , typename P , template< typename > class, typename D , typename... Ds>
friend class Slice
friend

Definition at line 266 of file Slice.h.

Member Data Documentation

template<bool is_const, typename SliceTraitsT, template< typename > class SliceMixin, typename Dimension, typename... Dimensions>
constexpr std::size_t pss::astrotypes::Slice< is_const, SliceTraitsT, SliceMixin, Dimension, Dimensions >::rank = 1 + sizeof...(Dimensions)
static

Definition at line 149 of file Slice.h.