Alexandria
2.14.1
Please provide a description of the project.
|
Go to the documentation of this file.
25 #ifndef GRIDCONTAINER_GRIDCONTAINER_H
26 #define GRIDCONTAINER_GRIDCONTAINER_H
32 #include <type_traits>
38 namespace GridContainer {
96 template<
typename GridCellManager,
typename... AxesTypes>
115 template<
typename CellType>
388 template<
typename GridCellManager,
typename... AxesTypes>
389 template<
typename CellType>
390 class GridContainer<GridCellManager, AxesTypes...>::iter :
public std::iterator<std::forward_iterator_tag, CellType> {
402 iter(
const GridContainer<GridCellManager, AxesTypes...>& owner,
406 iter(
const iter<CellType>&) =
default;
409 iter(iter<CellType>&&) =
default;
418 CellType& operator*();
424 CellType* operator->();
431 bool operator==(
const iter& other)
const;
440 size_t axisIndex()
const;
445 const axis_type<I>& axisValue()
const;
492 template<
typename OtherIter>
493 iter& fixAllAxes(
const OtherIter& other);
500 void forwardToIndex(
size_t axis,
size_t fixed_index);
typename std::tuple_element< I, std::tuple< AxesTypes... > >::type axis_type
std::tuple< GridAxis< AxesTypes >... > m_axes_fixed
a tuple containing the original axes of the full grid, if this grid is a slice
GridIndexHelper< AxesTypes... > m_index_helper_fixed
a helper class for calculations of the original axes indices
static std::unique_ptr< GridCellManager > factory(size_t size)
Provides information related with an axis of a GridContainer.
const cell_type & operator()(decltype(std::declval< GridAxis< AxesTypes >>().size())... indices) const
Representation of a multi-dimensional grid which contains axis information.
GridContainer construction helper class.
Helper class for converting multi-dimensional grid coordinates to the index of a long data array and ...
GridCellManager::iterator iterator
bool operator!=(const Euclid::SourceCatalog::Source::id_type &a, const Euclid::SourceCatalog::Source::id_type &b)
boost::variant specifies an equality operator (==), but, in older boost versions, not an inequality o...
GridCellManagerTraits< GridCellManager >::data_type cell_type
The type of the values stored in the grid cells.
iterator end()
Returns an iterator to the cell after the last of the grid.
virtual ~GridContainer()=default
Default destructor.
iterator begin()
Returns an iterator to the first cell of the grid.
GridIndexHelper< AxesTypes... > m_index_helper
A helper class used for calculations of the axes indices.
static constexpr size_t axisNumber()
Returns the number of axes of the grid (dimensionality)
const GridAxis< axis_type< I > > & getOriginalAxis() const
std::tuple< GridAxis< AxesTypes >... > m_axes
A tuple containing the axes of the grid.
std::map< size_t, size_t > m_fixed_indices
A map containing the axes which have been fixed, if this grid is a slice.
const std::tuple< GridAxis< AxesTypes >... > & getAxesTuple() const
Returns a tuple containing the information of all the grid axes.
GridContainer< GridCellManager, AxesTypes... > fixAxisByValue(const axis_type< I > &value)
Returns a slice of the grid based on an axis value.
std::tuple< GridAxis< AxesTypes >... > AxesTuple
The type of the tuple keeping the axes of the grid.
iter< cell_type const > const_iterator
cell_manager_iter_type m_data_iter
iter< cell_type > iterator
const GridAxis< axis_type< I > > & getAxis() const
size_t size() const
Returns the total number of cells of the grid.
const_iterator cbegin()
Returns a constant iterator to the first cell of the grid.
const_iterator cend()
Returns a constant iterator to the cell after the last of the grid.
std::map< size_t, size_t > m_fixed_indices
GridContainer & operator=(GridContainer< GridCellManager, AxesTypes... > &&)=default
const GridContainer< GridCellManager, AxesTypes... > & m_owner
GridContainer< GridCellManager, AxesTypes... > fixAxisByIndex(size_t index)
Returns a slice of the grid based on an axis index.
GridCellManagerTraits< GridCellManager >::iterator cell_manager_iter_type
std::shared_ptr< GridCellManager > m_cell_manager
A pointer to the data of the grid.
const cell_type & at(decltype(std::declval< GridAxis< AxesTypes >>().size())... indices) const
GridCellManager::data_type data_type
The type of the data kept by the GridCellManager.
GridContainer(GridAxis< AxesTypes >... axes)
Constructs a GridContainer with the given axes.