AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
axom::slam::Map< SetType, DataType, StridePolicy > Class Template Reference

A Map class that associates a constant number of values to every element in a set. More...

#include </home/docs/checkouts/readthedocs.org/user_builds/axom/checkouts/v0.5.0/src/axom/slam/Map.hpp>

Inheritance diagram for axom::slam::Map< SetType, DataType, StridePolicy >:

Classes

class  MapBuilder
 Helper class for constructing a Map. More...
 
class  MapIterator
 An iterator type for a map. Each increment operation advances the iterator to the next set element. To access the jth component values of the iterator's current element, use iter(j). More...
 

Public Types

using OrderedMap = std::vector< DataType >
 
using StridePolicyType = StridePolicy
 
using SetPosition = typename SetType::PositionType
 
using SetElement = typename SetType::ElementType
 
using const_iterator = MapIterator
 
using const_iterator_pair = std::pair< const_iterator, const_iterator >
 
using iterator = const_iterator
 
using iterator_pair = const_iterator_pair
 

Public Member Functions

 Map (const SetType *theSet=&s_nullSet, DataType defaultValue=DataType(), SetPosition stride=StridePolicyType::DEFAULT_VALUE)
 Constructor for Map using a Set pointer. More...
 
 Map (const Map &otherMap)
 
 Map (const MapBuilder &builder)
 Constructor for Map using a MapBuilder. More...
 
Mapoperator= (const Map &otherMap)
 Assignment operator for Map. More...
 
const SetType * set () const
 Returns a pointer to the map's underlying set. More...
 
void print () const
 print information on the map, including every element inside Map More...
 
bool isValid (bool verboseOutput=false) const
 returns true if the map is valid, false otherwise. More...
 
MapIterator begin ()
 
MapIterator end ()
 
const_iterator_pair range () const
 
OrderedMapdata ()
 Returns a reference to the underlying map data. More...
 
const OrderedMapdata () const
 
Map individual access functions
const DataType & operator[] (SetPosition setIndex) const
 Access the value in the map using a flat index in the range of 0 to size()*numComp() More...
 
DataType & operator[] (SetPosition setIndex)
 
const DataType & operator() (SetPosition setIdx, SetPosition comp=0) const
 Access the value associated with the given position in the set and the component index. More...
 
DataType & operator() (SetPosition setIdx, SetPosition comp=0)
 
Map cardinality functions
SetPosition size () const
 Return the set size. Same as set()->size(). More...
 
SetPosition numComp () const
 
Map modifying functions for all entries
void clear ()
 replace all elements in the Map with the default DataType More...
 
void fill (DataType val=DataType())
 
void copy (const Map &other)
 Element-wise copy of data from another map. More...
 

Static Public Attributes

static const NullSet< SetPosition, SetElements_nullSet
 Definition of static instance of nullSet for all maps. More...
 

Detailed Description

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
class axom::slam::Map< SetType, DataType, StridePolicy >

A Map class that associates a constant number of values to every element in a set.

Template Parameters
DataTypeThe data type of each value
StridePolicyA policy class that determines how many values to associate with each element. There is a fixed stride between the data associated with each element of the set.

The map class associates a fixed number of values, also referred to as components, with each element in its underlying Set instance. Depending on the StridePolicy, this can be fixed at compile time or at runtime.
Access to the jth component of the ith element, can be obtained via the parenthesis operator ( map(i,j) ), or via the square bracket operator (i.e. map[k], where k = i * stride() + j ).

Member Typedef Documentation

◆ OrderedMap

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::Map< SetType, DataType, StridePolicy >::OrderedMap = std::vector<DataType>

◆ StridePolicyType

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::Map< SetType, DataType, StridePolicy >::StridePolicyType = StridePolicy

◆ SetPosition

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::Map< SetType, DataType, StridePolicy >::SetPosition = typename SetType::PositionType

◆ SetElement

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::Map< SetType, DataType, StridePolicy >::SetElement = typename SetType::ElementType

◆ const_iterator

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::Map< SetType, DataType, StridePolicy >::const_iterator = MapIterator

◆ const_iterator_pair

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::Map< SetType, DataType, StridePolicy >::const_iterator_pair = std::pair<const_iterator, const_iterator>

◆ iterator

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::Map< SetType, DataType, StridePolicy >::iterator = const_iterator

◆ iterator_pair

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
using axom::slam::Map< SetType, DataType, StridePolicy >::iterator_pair = const_iterator_pair

Constructor & Destructor Documentation

◆ Map() [1/3]

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
axom::slam::Map< SetType, DataType, StridePolicy >::Map ( const SetType *  theSet = &s_nullSet,
DataType  defaultValue = DataType(),
SetPosition  stride = StridePolicyType::DEFAULT_VALUE 
)
inline

Constructor for Map using a Set pointer.

Parameters
theSet(Optional) A pointer to the map's set
defaultValue(Optional) If given, every entry in the map will be initialized using defaultValue
stride(Optional) The stride. The number of DataType that each element in the set will be mapped to. When using a RuntimeStridePolicy, the default is 1.
Note
When using a compile time StridePolicy, stride must be equal to stride(), when provided.

◆ Map() [2/3]

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
axom::slam::Map< SetType, DataType, StridePolicy >::Map ( const Map< SetType, DataType, StridePolicy > &  otherMap)
inline

Copy constructor from another map

◆ Map() [3/3]

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
axom::slam::Map< SetType, DataType, StridePolicy >::Map ( const MapBuilder builder)
inline

Constructor for Map using a MapBuilder.

Member Function Documentation

◆ operator=()

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
Map& axom::slam::Map< SetType, DataType, StridePolicy >::operator= ( const Map< SetType, DataType, StridePolicy > &  otherMap)
inline

Assignment operator for Map.

◆ set()

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
const SetType* axom::slam::Map< SetType, DataType, StridePolicy >::set ( ) const
inline

Returns a pointer to the map's underlying set.

Referenced by axom::spin::ImplicitGrid< NDIMS, TheIndexType >::insert().

◆ operator[]() [1/2]

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
const DataType& axom::slam::Map< SetType, DataType, StridePolicy >::operator[] ( SetPosition  setIndex) const
inline

Access the value in the map using a flat index in the range of 0 to size()*numComp()

Returns
The value for the jth component of the ith element, where setIndex = i * numComp() + j.
Precondition
0 <= setIndex < size() * numComp()

◆ operator[]() [2/2]

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
DataType& axom::slam::Map< SetType, DataType, StridePolicy >::operator[] ( SetPosition  setIndex)
inline

◆ operator()() [1/2]

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
const DataType& axom::slam::Map< SetType, DataType, StridePolicy >::operator() ( SetPosition  setIdx,
SetPosition  comp = 0 
) const
inline

Access the value associated with the given position in the set and the component index.

Precondition
0 <= setIdx < size()
0 <= comp < numComp()

◆ operator()() [2/2]

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
DataType& axom::slam::Map< SetType, DataType, StridePolicy >::operator() ( SetPosition  setIdx,
SetPosition  comp = 0 
)
inline

◆ size()

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SetPosition axom::slam::Map< SetType, DataType, StridePolicy >::size ( ) const
inlinevirtual

◆ numComp()

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
SetPosition axom::slam::Map< SetType, DataType, StridePolicy >::numComp ( ) const
inline

◆ clear()

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
void axom::slam::Map< SetType, DataType, StridePolicy >::clear ( )
inline

replace all elements in the Map with the default DataType

◆ fill()

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
void axom::slam::Map< SetType, DataType, StridePolicy >::fill ( DataType  val = DataType())
inline

Set each entry in the map to the given value

Referenced by axom::slam::Map< slam::Set< CoordType, CoordType >, OctreeLevelType * >::clear().

◆ copy()

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
void axom::slam::Map< SetType, DataType, StridePolicy >::copy ( const Map< SetType, DataType, StridePolicy > &  other)
inline

Element-wise copy of data from another map.

Referenced by axom::slam::Map< slam::Set< CoordType, CoordType >, OctreeLevelType * >::Map().

◆ print()

template<typename SetType , typename DataType , typename StridePolicy >
void axom::slam::Map< SetType, DataType, StridePolicy >::print ( ) const

print information on the map, including every element inside Map

Referenced by axom::slam::Map< slam::Set< CoordType, CoordType >, OctreeLevelType * >::copy().

◆ isValid()

template<typename SetType , typename DataType , typename StridePolicy >
bool axom::slam::Map< SetType, DataType, StridePolicy >::isValid ( bool  verboseOutput = false) const
virtual

◆ begin()

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
MapIterator axom::slam::Map< SetType, DataType, StridePolicy >::begin ( )
inline

◆ end()

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
MapIterator axom::slam::Map< SetType, DataType, StridePolicy >::end ( )
inline

◆ range()

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
const_iterator_pair axom::slam::Map< SetType, DataType, StridePolicy >::range ( ) const
inline

◆ data() [1/2]

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
OrderedMap& axom::slam::Map< SetType, DataType, StridePolicy >::data ( )
inline

Returns a reference to the underlying map data.

◆ data() [2/2]

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
const OrderedMap& axom::slam::Map< SetType, DataType, StridePolicy >::data ( ) const
inline

Member Data Documentation

◆ s_nullSet

template<typename SetType, typename DataType, typename StridePolicy = policies::StrideOne<typename SetType::PositionType>>
NullSet< typename SetType::PositionType, typename SetType::ElementType > const axom::slam::Map< SetType, DataType, StridePolicy >::s_nullSet
static

Definition of static instance of nullSet for all maps.

Note
Should this be a singleton or a global object? Should the scope be public?

Referenced by axom::slam::Map< SetType, DataType, StridePolicy >::MapBuilder::data().


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