AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
axom::slam::GenericRangeSet< P, E, OffsetPolicy, StridingPolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy > Class Template Reference

Models a set whose elements belong to a contiguous range \( \in [lowerIndex,upperIndex) \). More...

#include </home/docs/checkouts/readthedocs.org/user_builds/axom/checkouts/latest/src/axom/slam/RangeSet.hpp>

Inheritance diagram for axom::slam::GenericRangeSet< P, E, OffsetPolicy, StridingPolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >:

Public Types

using PositionType = P
 
using ElementType = E
 
using ConcreteSet = ConvertibleRangeSet< IndirectionPolicy, policies::ConcreteInterface >
 
using VirtualSet = ConvertibleRangeSet< IndirectionPolicy, policies::VirtualInterface >
 
using OtherIfaceSet = std::conditional_t< std::is_same< InterfacePolicy, policies::VirtualInterface >::value, ConcreteSet, VirtualSet >
 
using SizePolicyType = policies::RuntimeSize< slam::DefaultPositionType >
 
using OffsetPolicyType = policies::RuntimeOffset< slam::DefaultPositionType >
 
using StridePolicyType = policies::StrideOne< slam::DefaultPositionType >
 
using IndirectionPolicyType = policies::NoIndirection< slam::DefaultPositionType, slam::DefaultElementType >
 
using SubsettingPolicyType = policies::NoSubset
 
using ModularIntType = ModularInt< policies::RuntimeSize< slam::DefaultPositionType > >
 
using PositionSet = OrderedSet< PositionType >
 
using const_iterator = OrderedSetIterator< ElementType, true >
 
using const_iterator_pair = std::pair< const_iterator, const_iterator >
 
using iterator = OrderedSetIterator< ElementType, false >
 
using iterator_pair = std::pair< iterator, iterator >
 
using IndexType = IntType
 
using ShapeType = IntType
 
using IndirectionResult = slam::DefaultElementType
 
using ConstIndirectionResult = const slam::DefaultElementType
 
using IndirectionBufferType = struct { }
 
using IndirectionPtrType = IndirectionBufferType *
 
using ParentSetType = const Set<>
 

Public Member Functions

 GenericRangeSet (const OtherIfaceSet &otherSet)
 
 GenericRangeSet (PositionType size=OrderedSetType::SizePolicyType::DEFAULT_VALUE)
 
AXOM_HOST_DEVICE GenericRangeSet (const typename OrderedSetType::SetBuilder &builder)
 
 GenericRangeSet (PositionType lowerIndex, PositionType upperIndex)
 
 operator OrderedSet< slam::DefaultPositionType, slam::DefaultElementType, SizePolicyType, OffsetPolicyType, StridePolicyType, OtherIndirectionPolicy, SubsettingPolicyType, OtherInterfaceType > () const
 Converts this OrderedSet to an OrderedSet of another indirection policy and/or interface policy. More...
 
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 
iterator_pair range ()
 
const_iterator_pair range () const
 
AXOM_HOST_DEVICE IndirectionPolicy::ConstIndirectionResult operator[] (PositionType pos) const
 Given a position in the Set, return a position in the larger index space. More...
 
AXOM_HOST_DEVICE IndirectionPolicy::IndirectionResult operator[] (PositionType pos)
 
ElementType at (PositionType pos) const
 
AXOM_HOST_DEVICE PositionType size () const
 
AXOM_HOST_DEVICE slam::DefaultPositionTypesize ()
 
AXOM_HOST_DEVICE bool empty () const
 
bool isValid (bool verboseOutput=false) const
 
bool isValid (slam::DefaultPositionType, slam::DefaultPositionType, slam::DefaultPositionType, bool) const
 
template<typename OrderedSetIt >
bool isValid (OrderedSetIt, OrderedSetIt, bool) const
 
bool isSubset () const
 
bool isValidIndex (PositionType pos) const
 checks whether the given position (index) is valid. More...
 
PositionSet positions () const
 returns a PositionSet over the set's positions More...
 
slam::DefaultPositionType operator() () const
 
slam::DefaultPositionTypeoperator() ()
 
slam::DefaultPositionType operator() () const
 
slam::DefaultPositionTypeoperator() ()
 
IntType operator() () const
 
AXOM_HOST_DEVICE IndirectionResult operator() (slam::DefaultPositionType pos) const
 
AXOM_HOST_DEVICE slam::DefaultPositionType offset () const
 
AXOM_HOST_DEVICE slam::DefaultPositionTypeoffset ()
 
AXOM_HOST_DEVICE IntType stride () const
 
AXOM_HOST_DEVICE IntType shape () const
 
AXOM_HOST_DEVICE void setStride (IntType AXOM_DEBUG_PARAM(val))
 
AXOM_HOST_DEVICE IndirectionResult indirection (slam::DefaultPositionType pos) const
 
AXOM_HOST_DEVICE IndirectionBufferTypeptr ()
 
bool hasIndirection () const
 
const ParentSetTypeparentSet () const
 

Static Public Member Functions

static constexpr IntType DefaultSize ()
 

Static Public Attributes

static const IntType DEFAULT_VALUE = INT_VAL
 
static const bool IS_COMPILE_TIME = true
 
constexpr static int NumDims = 1
 
static constexpr bool DeviceAccessible
 
static AXOM_SLAM_EXPORT const NullSet s_nullSet
 
OrderedSet_Size_Policies

A few default policies for the size of an OrderedSet

static const slam::DefaultPositionType DEFAULT_VALUE
 
OrderedSet_Offset_Policies

A few default policies for the offset of an OrderedSet

static const slam::DefaultPositionType DEFAULT_VALUE
 

Protected Attributes

slam::DefaultPositionType m_sz
 

Detailed Description

template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType, typename OffsetPolicy = policies::RuntimeOffset<P>, typename StridingPolicy = policies::StrideOne<P>, typename IndirectionPolicy = policies::NoIndirection<P, E>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
class axom::slam::GenericRangeSet< P, E, OffsetPolicy, StridingPolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >

Models a set whose elements belong to a contiguous range \( \in [lowerIndex,upperIndex) \).

Note
The ElementType here needs to be computable as offsets (of PositionType) from the lowerIndex. Examples include: signed and unsigned integral types. This version of a range set still allows you to have different policies on striding, indirection and subsetting
See also
OrderedSet, PositionSet, RangeSet

Member Typedef Documentation

◆ PositionType

template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType, typename OffsetPolicy = policies::RuntimeOffset<P>, typename StridingPolicy = policies::StrideOne<P>, typename IndirectionPolicy = policies::NoIndirection<P, E>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
using axom::slam::GenericRangeSet< P, E, OffsetPolicy, StridingPolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::PositionType = P

◆ ElementType

template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType, typename OffsetPolicy = policies::RuntimeOffset<P>, typename StridingPolicy = policies::StrideOne<P>, typename IndirectionPolicy = policies::NoIndirection<P, E>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
using axom::slam::GenericRangeSet< P, E, OffsetPolicy, StridingPolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::ElementType = E

◆ ConcreteSet

template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType, typename OffsetPolicy = policies::RuntimeOffset<P>, typename StridingPolicy = policies::StrideOne<P>, typename IndirectionPolicy = policies::NoIndirection<P, E>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
using axom::slam::GenericRangeSet< P, E, OffsetPolicy, StridingPolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::ConcreteSet = ConvertibleRangeSet<IndirectionPolicy, policies::ConcreteInterface>

◆ VirtualSet

template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType, typename OffsetPolicy = policies::RuntimeOffset<P>, typename StridingPolicy = policies::StrideOne<P>, typename IndirectionPolicy = policies::NoIndirection<P, E>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
using axom::slam::GenericRangeSet< P, E, OffsetPolicy, StridingPolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::VirtualSet = ConvertibleRangeSet<IndirectionPolicy, policies::VirtualInterface>

◆ OtherIfaceSet

template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType, typename OffsetPolicy = policies::RuntimeOffset<P>, typename StridingPolicy = policies::StrideOne<P>, typename IndirectionPolicy = policies::NoIndirection<P, E>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
using axom::slam::GenericRangeSet< P, E, OffsetPolicy, StridingPolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::OtherIfaceSet = std::conditional_t<std::is_same<InterfacePolicy, policies::VirtualInterface>::value, ConcreteSet, VirtualSet>

◆ SizePolicyType

◆ OffsetPolicyType

◆ StridePolicyType

◆ IndirectionPolicyType

◆ SubsettingPolicyType

◆ ModularIntType

◆ PositionSet

◆ const_iterator

◆ const_iterator_pair

◆ iterator

◆ iterator_pair

◆ IndexType

template<typename IntType , IntType INT_VAL>
using axom::slam::policies::CompileTimeStride< IntType, INT_VAL >::IndexType = IntType
inherited

◆ ShapeType

template<typename IntType , IntType INT_VAL>
using axom::slam::policies::CompileTimeStride< IntType, INT_VAL >::ShapeType = IntType
inherited

◆ IndirectionResult

◆ ConstIndirectionResult

◆ IndirectionBufferType

◆ IndirectionPtrType

◆ ParentSetType

Constructor & Destructor Documentation

◆ GenericRangeSet() [1/4]

template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType, typename OffsetPolicy = policies::RuntimeOffset<P>, typename StridingPolicy = policies::StrideOne<P>, typename IndirectionPolicy = policies::NoIndirection<P, E>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
axom::slam::GenericRangeSet< P, E, OffsetPolicy, StridingPolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::GenericRangeSet ( const OtherIfaceSet otherSet)
inline

◆ GenericRangeSet() [2/4]

template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType, typename OffsetPolicy = policies::RuntimeOffset<P>, typename StridingPolicy = policies::StrideOne<P>, typename IndirectionPolicy = policies::NoIndirection<P, E>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
axom::slam::GenericRangeSet< P, E, OffsetPolicy, StridingPolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::GenericRangeSet ( PositionType  size = OrderedSetType::SizePolicyType::DEFAULT_VALUE)
inline

◆ GenericRangeSet() [3/4]

template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType, typename OffsetPolicy = policies::RuntimeOffset<P>, typename StridingPolicy = policies::StrideOne<P>, typename IndirectionPolicy = policies::NoIndirection<P, E>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
AXOM_HOST_DEVICE axom::slam::GenericRangeSet< P, E, OffsetPolicy, StridingPolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::GenericRangeSet ( const typename OrderedSetType::SetBuilder builder)
inline

◆ GenericRangeSet() [4/4]

template<typename P = slam::DefaultPositionType, typename E = slam::DefaultElementType, typename OffsetPolicy = policies::RuntimeOffset<P>, typename StridingPolicy = policies::StrideOne<P>, typename IndirectionPolicy = policies::NoIndirection<P, E>, typename SubsettingPolicy = policies::NoSubset, typename InterfacePolicy = policies::VirtualInterface>
axom::slam::GenericRangeSet< P, E, OffsetPolicy, StridingPolicy, IndirectionPolicy, SubsettingPolicy, InterfacePolicy >::GenericRangeSet ( PositionType  lowerIndex,
PositionType  upperIndex 
)
inline

Member Function Documentation

◆ operator OrderedSet< slam::DefaultPositionType, slam::DefaultElementType, SizePolicyType, OffsetPolicyType, StridePolicyType, OtherIndirectionPolicy, SubsettingPolicyType, OtherInterfaceType >()

◆ begin() [1/2]

◆ begin() [2/2]

◆ end() [1/2]

◆ end() [2/2]

◆ range() [1/2]

◆ range() [2/2]

◆ operator[]() [1/2]

◆ operator[]() [2/2]

◆ at()

◆ size() [1/2]

◆ size() [2/2]

◆ empty()

◆ isValid() [1/3]

◆ isValid() [2/3]

bool axom::slam::policies::NoIndirection< slam::DefaultPositionType , slam::DefaultElementType >::isValid ( PositionType  ,
PositionType  ,
PositionType  ,
bool   
) const
inlineinherited

◆ isValid() [3/3]

template<typename OrderedSetIt >
bool axom::slam::policies::NoSubset::isValid ( OrderedSetIt  ,
OrderedSetIt  ,
bool   
) const
inlineinherited

◆ isSubset()

◆ isValidIndex()

checks whether the given position (index) is valid.

An index pos is valid when \( 0 \le pos < size() \)

Returns
true if the position is valid, false otherwise

◆ positions()

◆ operator()() [1/6]

◆ operator()() [2/6]

◆ operator()() [3/6]

◆ operator()() [4/6]

◆ operator()() [5/6]

template<typename IntType , IntType INT_VAL>
IntType axom::slam::policies::CompileTimeStride< IntType, INT_VAL >::operator() ( ) const
inlineinherited

◆ operator()() [6/6]

◆ offset() [1/2]

◆ offset() [2/2]

◆ DefaultSize()

template<typename IntType , IntType INT_VAL>
static constexpr IntType axom::slam::policies::CompileTimeStride< IntType, INT_VAL >::DefaultSize ( )
inlinestaticconstexprinherited

◆ stride()

template<typename IntType , IntType INT_VAL>
AXOM_HOST_DEVICE IntType axom::slam::policies::CompileTimeStride< IntType, INT_VAL >::stride ( ) const
inlineinherited

◆ shape()

template<typename IntType , IntType INT_VAL>
AXOM_HOST_DEVICE IntType axom::slam::policies::CompileTimeStride< IntType, INT_VAL >::shape ( ) const
inlineinherited

◆ setStride()

template<typename IntType , IntType INT_VAL>
AXOM_HOST_DEVICE void axom::slam::policies::CompileTimeStride< IntType, INT_VAL >::setStride ( IntType   AXOM_DEBUG_PARAMval)
inlineinherited

References SLIC_ASSERT_MSG.

◆ indirection()

◆ ptr()

◆ hasIndirection()

bool axom::slam::policies::NoIndirection< slam::DefaultPositionType , slam::DefaultElementType >::hasIndirection ( ) const
inlineinherited

◆ parentSet()

const ParentSetType* axom::slam::policies::NoSubset::parentSet ( ) const
inlineinherited

Member Data Documentation

◆ DEFAULT_VALUE [1/3]

◆ DEFAULT_VALUE [2/3]

◆ DEFAULT_VALUE [3/3]

template<typename IntType , IntType INT_VAL>
const IntType axom::slam::policies::CompileTimeStride< IntType, INT_VAL >::DEFAULT_VALUE = INT_VAL
staticinherited

◆ m_sz

◆ IS_COMPILE_TIME

template<typename IntType , IntType INT_VAL>
const bool axom::slam::policies::CompileTimeStride< IntType, INT_VAL >::IS_COMPILE_TIME = true
staticinherited

◆ NumDims

template<typename IntType , IntType INT_VAL>
constexpr static int axom::slam::policies::CompileTimeStride< IntType, INT_VAL >::NumDims = 1
staticconstexprinherited

◆ DeviceAccessible

constexpr bool axom::slam::policies::NoIndirection< slam::DefaultPositionType , slam::DefaultElementType >::DeviceAccessible
staticconstexprinherited

◆ s_nullSet

AXOM_SLAM_EXPORT const NullSet axom::slam::policies::NoSubset::s_nullSet
staticinherited

The documentation for this class was generated from the following file: