LArSoft  v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
util::details::GridContainerBase< DATUM, IXMAN > Class Template Reference

Base class for a container of data arranged on a grid. More...

#include "GridContainers.h"

Inheritance diagram for util::details::GridContainerBase< DATUM, IXMAN >:
util::GridContainerBase1D< DATUM, IXMAN > util::GridContainerBase2D< DATUM, IXMAN > util::GridContainerBase3D< DATUM, IXMAN >

Public Types

using Datum_t = DATUM
 type of contained datum More...
 
using Indexer_t = IXMAN
 
using Grid_t = GridContainerBase< Datum_t, Indexer_t >
 this type More...
 
using CellIndex_t = typename Indexer_t::CellIndex_t
 type of index for direct access to the cell More...
 
using CellIndexOffset_t = typename Indexer_t::CellIndexOffset_t
 type of difference between indices More...
 
using CellDimIndex_t = typename Indexer_t::CellDimIndex_t
 type of difference between indices More...
 
using CellID_t = typename Indexer_t::CellID_t
 type of cell coordinate (x, y, z) More...
 
using Cell_t = std::vector< Datum_t >
 type of a single cell container More...
 
using Cells_t = std::vector< Cell_t >
 type of container holding all cells More...
 
using const_iterator = typename Cells_t::const_iterator
 type of iterator to all cells More...
 

Public Member Functions

 GridContainerBase (std::array< size_t, dims()> const &dims)
 Constructor: specifies the size of the container and allocates it. More...
 
Indexer_t const & indexManager () const
 Returns the index manager of the grid. More...
 
Data structure
size_t size () const
 Returns the total size of the container. More...
 
bool has (CellIndexOffset_t index) const
 Returns whether the specified index is valid. More...
 
Data access
CellIndex_t index (CellID_t const &id) const
 Return the index of the element from its cell coordinates (no check!) More...
 
CellIndexOffset_t indexOffset (CellID_t const &origin, CellID_t const &cellID) const
 Returns the difference in index from two cells. More...
 
Cell_toperator[] (CellID_t const &id)
 Returns a reference to the specified cell. More...
 
Cell_t const & operator[] (CellID_t const &id) const
 Returns a constant reference to the specified cell. More...
 
Cell_toperator[] (CellIndex_t index)
 Returns a reference to to the cell with specified index. More...
 
Cell_t const & operator[] (CellIndex_t index) const
 Returns a constant reference to the cell with specified index. More...
 
Data insertion
void insert (CellID_t const &cellID, Datum_t const &elem)
 Copies an element into the specified cell. More...
 
void insert (CellID_t const &cellID, Datum_t &&elem)
 Moves an element into the specified cell. More...
 
void insert (CellIndex_t index, Datum_t const &elem)
 Copies an element into the cell with the specified index. More...
 
void insert (CellIndex_t index, Datum_t &&elem)
 Moves an element into the cell with the specified index. More...
 

Static Public Member Functions

static constexpr unsigned int dims ()
 

Protected Member Functions

Cell_tcell (CellID_t const &cellID)
 Returns a reference to the specified cell. More...
 
Cell_t const & cell (CellID_t const &cellID) const
 Returns a constant reference to the specified cell. More...
 

Protected Attributes

Indexer_t indices
 manager of the indices of the container More...
 
Cells_t data
 organised collection of points More...
 

Detailed Description

template<typename DATUM, typename IXMAN>
class util::details::GridContainerBase< DATUM, IXMAN >

Base class for a container of data arranged on a grid.

Template Parameters
DATUMtype of datum to be contained
IXMANtype of the grid index manager

This is base class for GridContainer::D classes. It provides the full functionality, to which the other classes add some dimension-specific interface.

Definition at line 42 of file GridContainers.h.

Member Typedef Documentation

template<typename DATUM, typename IXMAN>
using util::details::GridContainerBase< DATUM, IXMAN >::Cell_t = std::vector<Datum_t>

type of a single cell container

Definition at line 66 of file GridContainers.h.

template<typename DATUM, typename IXMAN>
using util::details::GridContainerBase< DATUM, IXMAN >::CellDimIndex_t = typename Indexer_t::CellDimIndex_t

type of difference between indices

Definition at line 60 of file GridContainers.h.

template<typename DATUM, typename IXMAN>
using util::details::GridContainerBase< DATUM, IXMAN >::CellID_t = typename Indexer_t::CellID_t

type of cell coordinate (x, y, z)

Definition at line 63 of file GridContainers.h.

template<typename DATUM, typename IXMAN>
using util::details::GridContainerBase< DATUM, IXMAN >::CellIndex_t = typename Indexer_t::CellIndex_t

type of index for direct access to the cell

Definition at line 54 of file GridContainers.h.

template<typename DATUM, typename IXMAN>
using util::details::GridContainerBase< DATUM, IXMAN >::CellIndexOffset_t = typename Indexer_t::CellIndexOffset_t

type of difference between indices

Definition at line 57 of file GridContainers.h.

template<typename DATUM, typename IXMAN>
using util::details::GridContainerBase< DATUM, IXMAN >::Cells_t = std::vector<Cell_t>

type of container holding all cells

Definition at line 69 of file GridContainers.h.

template<typename DATUM, typename IXMAN>
using util::details::GridContainerBase< DATUM, IXMAN >::const_iterator = typename Cells_t::const_iterator

type of iterator to all cells

Definition at line 72 of file GridContainers.h.

template<typename DATUM, typename IXMAN>
using util::details::GridContainerBase< DATUM, IXMAN >::Datum_t = DATUM

type of contained datum

Definition at line 45 of file GridContainers.h.

template<typename DATUM, typename IXMAN>
using util::details::GridContainerBase< DATUM, IXMAN >::Grid_t = GridContainerBase<Datum_t, Indexer_t>

this type

Definition at line 48 of file GridContainers.h.

template<typename DATUM, typename IXMAN>
using util::details::GridContainerBase< DATUM, IXMAN >::Indexer_t = IXMAN

Definition at line 46 of file GridContainers.h.

Constructor & Destructor Documentation

template<typename DATUM, typename IXMAN>
util::details::GridContainerBase< DATUM, IXMAN >::GridContainerBase ( std::array< size_t, dims()> const &  dims)
inline

Constructor: specifies the size of the container and allocates it.

Definition at line 75 of file GridContainers.h.

76  : indices(dims)
77  , data(indices.size())
78  {}
Cells_t data
organised collection of points
Indexer_t indices
manager of the indices of the container

Member Function Documentation

template<typename DATUM, typename IXMAN>
Cell_t& util::details::GridContainerBase< DATUM, IXMAN >::cell ( CellID_t const &  cellID)
inlineprotected

Returns a reference to the specified cell.

Definition at line 147 of file GridContainers.h.

Referenced by util::details::GridContainerBase< PointIter, IXMAN >::insert(), and util::details::GridContainerBase< PointIter, IXMAN >::operator[]().

148  { return data[index(cellID)]; }
Cells_t data
organised collection of points
CellIndex_t index(CellID_t const &id) const
Return the index of the element from its cell coordinates (no check!)
template<typename DATUM, typename IXMAN>
Cell_t const& util::details::GridContainerBase< DATUM, IXMAN >::cell ( CellID_t const &  cellID) const
inlineprotected

Returns a constant reference to the specified cell.

Definition at line 151 of file GridContainers.h.

152  { return data[index(cellID)]; }
Cells_t data
organised collection of points
CellIndex_t index(CellID_t const &id) const
Return the index of the element from its cell coordinates (no check!)
template<typename DATUM, typename IXMAN>
static constexpr unsigned int util::details::GridContainerBase< DATUM, IXMAN >::dims ( )
inlinestatic

Definition at line 51 of file GridContainers.h.

51 { return IXMAN::dims(); }
template<typename DATUM, typename IXMAN>
bool util::details::GridContainerBase< DATUM, IXMAN >::has ( CellIndexOffset_t  index) const
inline

Returns whether the specified index is valid.

Definition at line 87 of file GridContainers.h.

87 { return indices.has(index); }
Indexer_t indices
manager of the indices of the container
CellIndex_t index(CellID_t const &id) const
Return the index of the element from its cell coordinates (no check!)
template<typename DATUM, typename IXMAN>
CellIndex_t util::details::GridContainerBase< DATUM, IXMAN >::index ( CellID_t const &  id) const
inline

Return the index of the element from its cell coordinates (no check!)

Definition at line 95 of file GridContainers.h.

Referenced by util::details::GridContainerBase< PointIter, IXMAN >::cell(), util::details::GridContainerBase< PointIter, IXMAN >::insert(), and util::details::GridContainerBase< PointIter, IXMAN >::operator[]().

95 { return indices[id]; }
Indexer_t indices
manager of the indices of the container
template<typename DATUM, typename IXMAN>
Indexer_t const& util::details::GridContainerBase< DATUM, IXMAN >::indexManager ( ) const
inline

Returns the index manager of the grid.

Definition at line 138 of file GridContainers.h.

138 { return indices; }
Indexer_t indices
manager of the indices of the container
template<typename DATUM, typename IXMAN>
CellIndexOffset_t util::details::GridContainerBase< DATUM, IXMAN >::indexOffset ( CellID_t const &  origin,
CellID_t const &  cellID 
) const
inline

Returns the difference in index from two cells.

Definition at line 99 of file GridContainers.h.

Referenced by util::details::GridContainerBase< PointIter, IXMAN >::index().

100  { return indices.offset(origin, cellID); }
Indexer_t indices
manager of the indices of the container
constexpr Point origin()
Returns a origin position with a point of the specified type.
Definition: geo_vectors.h:230
template<typename DATUM, typename IXMAN>
void util::details::GridContainerBase< DATUM, IXMAN >::insert ( CellID_t const &  cellID,
Datum_t const &  elem 
)
inline

Copies an element into the specified cell.

Definition at line 120 of file GridContainers.h.

121  { cell(cellID).push_back(elem); }
Cell_t & cell(CellID_t const &cellID)
Returns a reference to the specified cell.
template<typename DATUM, typename IXMAN>
void util::details::GridContainerBase< DATUM, IXMAN >::insert ( CellID_t const &  cellID,
Datum_t &&  elem 
)
inline

Moves an element into the specified cell.

Definition at line 124 of file GridContainers.h.

125  { cell(cellID).push_back(std::move(elem)); }
Cell_t & cell(CellID_t const &cellID)
Returns a reference to the specified cell.
template<typename DATUM, typename IXMAN>
void util::details::GridContainerBase< DATUM, IXMAN >::insert ( CellIndex_t  index,
Datum_t const &  elem 
)
inline

Copies an element into the cell with the specified index.

Definition at line 128 of file GridContainers.h.

129  { data[index].push_back(elem); }
Cells_t data
organised collection of points
CellIndex_t index(CellID_t const &id) const
Return the index of the element from its cell coordinates (no check!)
template<typename DATUM, typename IXMAN>
void util::details::GridContainerBase< DATUM, IXMAN >::insert ( CellIndex_t  index,
Datum_t &&  elem 
)
inline

Moves an element into the cell with the specified index.

Definition at line 132 of file GridContainers.h.

133  { data[index].push_back(std::move(elem)); }
Cells_t data
organised collection of points
CellIndex_t index(CellID_t const &id) const
Return the index of the element from its cell coordinates (no check!)
template<typename DATUM, typename IXMAN>
Cell_t& util::details::GridContainerBase< DATUM, IXMAN >::operator[] ( CellID_t const &  id)
inline

Returns a reference to the specified cell.

Definition at line 103 of file GridContainers.h.

103 { return cell(id); }
Cell_t & cell(CellID_t const &cellID)
Returns a reference to the specified cell.
template<typename DATUM, typename IXMAN>
Cell_t const& util::details::GridContainerBase< DATUM, IXMAN >::operator[] ( CellID_t const &  id) const
inline

Returns a constant reference to the specified cell.

Definition at line 106 of file GridContainers.h.

106 { return cell(id); }
Cell_t & cell(CellID_t const &cellID)
Returns a reference to the specified cell.
template<typename DATUM, typename IXMAN>
Cell_t& util::details::GridContainerBase< DATUM, IXMAN >::operator[] ( CellIndex_t  index)
inline

Returns a reference to to the cell with specified index.

Definition at line 109 of file GridContainers.h.

109 { return data[index]; }
Cells_t data
organised collection of points
CellIndex_t index(CellID_t const &id) const
Return the index of the element from its cell coordinates (no check!)
template<typename DATUM, typename IXMAN>
Cell_t const& util::details::GridContainerBase< DATUM, IXMAN >::operator[] ( CellIndex_t  index) const
inline

Returns a constant reference to the cell with specified index.

Definition at line 112 of file GridContainers.h.

112 { return data[index]; }
Cells_t data
organised collection of points
CellIndex_t index(CellID_t const &id) const
Return the index of the element from its cell coordinates (no check!)
template<typename DATUM, typename IXMAN>
size_t util::details::GridContainerBase< DATUM, IXMAN >::size ( ) const
inline

Returns the total size of the container.

Definition at line 84 of file GridContainers.h.

84 { return indices.size(); }
Indexer_t indices
manager of the indices of the container

Member Data Documentation

template<typename DATUM, typename IXMAN>
Cells_t util::details::GridContainerBase< DATUM, IXMAN >::data
protected

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