AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
axom::slam::policies::detail::IndexedIndirection< BasePolicy > Class Template Reference

Provides a mixin class for a generic indexable indirection policy. More...

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

Inherits BasePolicy.

Public Types

using PositionType = typename BasePolicy::PosType
 

Public Member Functions

bool isValid (PositionType size, PositionType offset, PositionType stride, bool verboseOutput=false) const
 
AXOM_HOST_DEVICE ConstIndirectionResult indirection (PositionType pos) const
 
AXOM_HOST_DEVICE IndirectionResult indirection (PositionType pos)
 
AXOM_HOST_DEVICE ConstIndirectionResult operator() (PositionType pos) const
 
AXOM_HOST_DEVICE IndirectionResult operator() (PositionType pos)
 

Static Public Member Functions

template<bool DeviceEnable = BasePolicy::DeviceAccessible>
static AXOM_HOST_DEVICE std::enable_if_t< DeviceEnable, IndirectionResult > getIndirection (IndirectionRefType buf, PositionType pos)
 
template<bool DeviceEnable = BasePolicy::DeviceAccessible>
static AXOM_HOST_DEVICE std::enable_if_t< DeviceEnable, ConstIndirectionResult > getConstIndirection (IndirectionConstRefType buf, PositionType pos)
 
template<bool DeviceEnable = BasePolicy::DeviceAccessible>
static AXOM_HOST_DEVICE std::enable_if_t<!DeviceEnable, IndirectionResult > getIndirection (IndirectionRefType buf, PositionType pos)
 
template<bool DeviceEnable = BasePolicy::DeviceAccessible>
static AXOM_HOST_DEVICE std::enable_if_t<!DeviceEnable, ConstIndirectionResult > getConstIndirection (IndirectionConstRefType buf, PositionType pos)
 

Detailed Description

template<typename BasePolicy>
class axom::slam::policies::detail::IndexedIndirection< BasePolicy >

Provides a mixin class for a generic indexable indirection policy.

Template Parameters
BasePolicythe type of the derived indirection policy class
Precondition
BasePolicy must implement the following methods:
  • data(): returns the underlying indirection buffer object
  • size(): returns the size of the backing buffer
  • checkIndirection(pos): checks whether the indirection and index is valid

Member Typedef Documentation

◆ PositionType

template<typename BasePolicy >
using axom::slam::policies::detail::IndexedIndirection< BasePolicy >::PositionType = typename BasePolicy::PosType

Member Function Documentation

◆ isValid()

template<typename BasePolicy >
bool axom::slam::policies::detail::IndexedIndirection< BasePolicy >::isValid ( PositionType  size,
PositionType  offset,
PositionType  stride,
bool  verboseOutput = false 
) const
inline

References AXOM_UNUSED_VAR, and SLIC_DEBUG_IF.

◆ getIndirection() [1/2]

template<typename BasePolicy >
template<bool DeviceEnable = BasePolicy::DeviceAccessible>
static AXOM_HOST_DEVICE std::enable_if_t<DeviceEnable, IndirectionResult> axom::slam::policies::detail::IndexedIndirection< BasePolicy >::getIndirection ( IndirectionRefType  buf,
PositionType  pos 
)
inlinestatic

◆ getConstIndirection() [1/2]

template<typename BasePolicy >
template<bool DeviceEnable = BasePolicy::DeviceAccessible>
static AXOM_HOST_DEVICE std::enable_if_t<DeviceEnable, ConstIndirectionResult> axom::slam::policies::detail::IndexedIndirection< BasePolicy >::getConstIndirection ( IndirectionConstRefType  buf,
PositionType  pos 
)
inlinestatic

◆ getIndirection() [2/2]

template<typename BasePolicy >
template<bool DeviceEnable = BasePolicy::DeviceAccessible>
static AXOM_HOST_DEVICE std::enable_if_t<!DeviceEnable, IndirectionResult> axom::slam::policies::detail::IndexedIndirection< BasePolicy >::getIndirection ( IndirectionRefType  buf,
PositionType  pos 
)
inlinestatic

◆ getConstIndirection() [2/2]

template<typename BasePolicy >
template<bool DeviceEnable = BasePolicy::DeviceAccessible>
static AXOM_HOST_DEVICE std::enable_if_t<!DeviceEnable, ConstIndirectionResult> axom::slam::policies::detail::IndexedIndirection< BasePolicy >::getConstIndirection ( IndirectionConstRefType  buf,
PositionType  pos 
)
inlinestatic

◆ indirection() [1/2]

template<typename BasePolicy >
AXOM_HOST_DEVICE ConstIndirectionResult axom::slam::policies::detail::IndexedIndirection< BasePolicy >::indirection ( PositionType  pos) const
inline

◆ indirection() [2/2]

template<typename BasePolicy >
AXOM_HOST_DEVICE IndirectionResult axom::slam::policies::detail::IndexedIndirection< BasePolicy >::indirection ( PositionType  pos)
inline

◆ operator()() [1/2]

template<typename BasePolicy >
AXOM_HOST_DEVICE ConstIndirectionResult axom::slam::policies::detail::IndexedIndirection< BasePolicy >::operator() ( PositionType  pos) const
inline

◆ operator()() [2/2]

template<typename BasePolicy >
AXOM_HOST_DEVICE IndirectionResult axom::slam::policies::detail::IndexedIndirection< BasePolicy >::operator() ( PositionType  pos)
inline

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