LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
geo::details::IteratorMaker< T, typename > Struct Template Reference

#include "geometry_iterator_maker.h"

Public Types

using ID_t = typename T::ID_t
 
using begin_type = element_iterator_for< T >
 
using end_type = element_iterator_for< T >
 
using range_type = util::span< begin_type, end_type >
 

Static Public Member Functions

template<typename Geom >
static begin_type create_begin (Geom const *geom)
 
template<typename Geom >
static end_type create_end (Geom const *geom)
 
template<typename Geom >
static range_type create_range (Geom const *geom)
 
template<typename Geom , typename BaseID >
static begin_type create_begin (Geom const *geom, BaseID const &id)
 
template<typename Geom , typename BaseID >
static end_type create_end (Geom const *geom, BaseID const &id)
 
template<typename Geom , typename BaseID >
static range_type create_range (Geom const *geom, BaseID const &id)
 

Detailed Description

template<typename T, typename = void>
struct geo::details::IteratorMaker< T, typename >

Definition at line 15 of file geometry_iterator_maker.h.

Member Typedef Documentation

template<typename T , typename = void>
using geo::details::IteratorMaker< T, typename >::begin_type = element_iterator_for<T>

Definition at line 17 of file geometry_iterator_maker.h.

template<typename T , typename = void>
using geo::details::IteratorMaker< T, typename >::end_type = element_iterator_for<T>

Definition at line 18 of file geometry_iterator_maker.h.

template<typename T , typename = void>
using geo::details::IteratorMaker< T, typename >::ID_t = typename T::ID_t

Definition at line 16 of file geometry_iterator_maker.h.

template<typename T , typename = void>
using geo::details::IteratorMaker< T, typename >::range_type = util::span<begin_type, end_type>

Definition at line 19 of file geometry_iterator_maker.h.

Member Function Documentation

template<typename T , typename = void>
template<typename Geom >
static begin_type geo::details::IteratorMaker< T, typename >::create_begin ( Geom const *  geom)
inlinestatic

Definition at line 22 of file geometry_iterator_maker.h.

Referenced by geo::GeometryCore::begin(), geo::details::IteratorMaker< T, typename >::create_range(), and geo::details::IteratorMaker< T, std::enable_if_t< std::is_base_of_v< CryostatID, T > > >::create_range().

23  {
24  return {geom, id_iterator<ID_t>{geom, geom->template GetBeginID<ID_t>()}};
25  }
template<typename T , typename = void>
template<typename Geom , typename BaseID >
static begin_type geo::details::IteratorMaker< T, typename >::create_begin ( Geom const *  geom,
BaseID const &  id 
)
inlinestatic

Definition at line 40 of file geometry_iterator_maker.h.

41  {
42  static_assert(is_base_of_strict<BaseID, ID_t>);
43  return {geom, id_iterator<ID_t>{geom, geom->template GetBeginID<ID_t>(id)}};
44  }
template<typename T , typename = void>
template<typename Geom >
static end_type geo::details::IteratorMaker< T, typename >::create_end ( Geom const *  geom)
inlinestatic

Definition at line 28 of file geometry_iterator_maker.h.

Referenced by geo::details::IteratorMaker< T, typename >::create_range(), geo::details::IteratorMaker< T, std::enable_if_t< std::is_base_of_v< CryostatID, T > > >::create_range(), and geo::GeometryCore::end().

29  {
30  return {geom, id_iterator<ID_t>{geom, geom->template GetEndID<ID_t>()}};
31  }
template<typename T , typename = void>
template<typename Geom , typename BaseID >
static end_type geo::details::IteratorMaker< T, typename >::create_end ( Geom const *  geom,
BaseID const &  id 
)
inlinestatic

Definition at line 47 of file geometry_iterator_maker.h.

48  {
49  static_assert(is_base_of_strict<BaseID, ID_t>);
50  return {geom, id_iterator<ID_t>{geom, geom->template GetEndID<ID_t>(id)}};
51  }
template<typename T , typename = void>
template<typename Geom >
static range_type geo::details::IteratorMaker< T, typename >::create_range ( Geom const *  geom)
inlinestatic

Definition at line 34 of file geometry_iterator_maker.h.

References geo::details::IteratorMaker< T, typename >::create_begin(), and geo::details::IteratorMaker< T, typename >::create_end().

Referenced by geo::GeometryCore::Iterate().

35  {
36  return {create_begin(geom), create_end(geom)};
37  }
static end_type create_end(Geom const *geom)
static begin_type create_begin(Geom const *geom)
template<typename T , typename = void>
template<typename Geom , typename BaseID >
static range_type geo::details::IteratorMaker< T, typename >::create_range ( Geom const *  geom,
BaseID const &  id 
)
inlinestatic

Definition at line 54 of file geometry_iterator_maker.h.

References geo::details::IteratorMaker< T, typename >::create_begin(), and geo::details::IteratorMaker< T, typename >::create_end().

55  {
56  return {create_begin(geom, id), create_end(geom, id)};
57  }
static end_type create_end(Geom const *geom)
static begin_type create_begin(Geom const *geom)

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