All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Typedefs | Functions | Variables
geo::vect::details Namespace Reference

Classes

struct  AccumulateImpl
 
struct  AccumulateImpl< Op, First, Second, Others...>
 
struct  AccumulateImpl< Op, T >
 
struct  VectorScalar
 
struct  HasGetter
 
struct  DimensionImpl
 
struct  MemberFuncReturnType
 
struct  MemberFuncClassType
 
struct  MemberFuncClassType< Func Class::* >
 
struct  BaseCoordTypes
 
struct  BaseCoordTypes< Vector, void >
 
struct  CoordGetterTraits
 
class  CoordGetter
 Helper class for read of a single vector coordinate. More...
 
struct  CoordManagerTraits
 
class  CoordManager
 Helper class for read/write of a single vector coordinate. More...
 
class  BoundCoordGetter
 
class  BoundCoordManager
 
struct  AlwaysFalse
 
struct  DimensionImpl< Array, std::enable_if_t<(std::extent_v< Array > > 0)>
 
struct  DimensionImpl< std::array< T, Dim >, void >
 
struct  CoordManagerImpl
 
struct  CoordManagerImpl< Vector, 1U >
 
struct  CoordManagerImpl< Vector, 2U >
 
struct  CoordManagerImpl< Vector, 3U >
 
struct  CoordManagerImpl< Vector, 4U >
 
struct  CoordManagersImplBase
 
struct  CoordManagersImpl
 
struct  CoordManagersImpl< Vector, 2U >
 
struct  CoordManagersImpl< Vector, 3U >
 
struct  CoordManagersImpl< Vector, 4U >
 
struct  BindCoordManagersImplBase
 
struct  BindCoordManagersImpl
 
struct  BindCoordManagersImpl< Vector, 2U >
 
struct  BindCoordManagersImpl< Vector, 3U >
 
struct  BindCoordManagersImpl< Vector, 4U >
 
struct  ConvertToImplBase
 
struct  ConvertArrayTo
 
struct  ConvertToImplDim
 
struct  ConvertToImpl
 
struct  ConvertToImpl< Dest, std::array< T, Dim > >
 
struct  ConvertToImpl< Dest, T[Dim]>
 
struct  ConvertToImpl< Dest, T * >
 
struct  ConvertToImplDim< Dest, Source, 2U >
 
struct  ConvertToImplDim< Dest, Source, 3U >
 
struct  ConvertToImplDim< Dest, Source, 4U >
 
struct  ConvertToDispatcher
 
struct  ConvertToDispatcher< Vector, Vector >
 

Typedefs

template<typename Vector >
using VectorScalar_t = typename VectorScalar< Vector >::type
 
template<typename Vector >
using CoordinateArray_t = std::array< VectorScalar_t< Vector >, dimension< Vector >()>
 A STL array suitable to contain all coordinate values of a Vector. More...
 
template<typename T >
using MemberFuncReturn_t = typename MemberFuncReturnType< T >::type
 
template<typename T >
using MemberFuncClass_t = typename MemberFuncClassType< T >::type
 
template<typename Vector >
using VectorIndices_t = std::make_index_sequence< dimension< Vector >()>
 Type of sequence of indices up to Vector size. More...
 

Functions

template<typename Op , typename... T>
auto extended_accumulate (Op op, T &&...args)
 
template<typename... T>
auto extended_and (T...args) -> decltype(auto)
 
template<typename Vector >
constexpr bool HasX ()
 
template<typename Vector >
constexpr bool HasY ()
 
template<typename Vector >
constexpr bool HasZ ()
 
template<typename Vector >
constexpr bool HasT ()
 
template<typename Vector >
constexpr unsigned int dimension ()
 
template<typename Getter >
constexpr auto makeCoordReader (Getter getter)
 
template<typename Getter , typename Setter >
constexpr auto makeCoordManager (Getter getter, Setter setter)
 
template<typename T >
constexpr T && constexpr_forward (std::remove_reference_t< T > &t)
 
template<typename T >
constexpr T && constexpr_forward (std::remove_reference_t< T > &&t)
 
template<typename Vector >
constexpr auto makeVectorIndices ()
 
template<typename Vector >
constexpr auto makeVectorIndices (Vector &&)
 
template<typename T , T... Indices>
constexpr auto makeIndexSeqImpl (std::integer_sequence< T, Indices...>)
 
template<typename T , T N>
constexpr auto makeIndexSeq ()
 
template<std::size_t I, typename Data >
constexpr auto accessElement (Data &&data)
 
template<typename Vector , typename Coords , std::size_t... Indices>
constexpr Vector makeFromCoordsImpl (Coords &&coords, std::index_sequence< Indices...>)
 
template<typename Point , std::size_t... I>
bool isfiniteImpl (Point const &point, std::index_sequence< I...>)
 

Variables

template<typename Vector >
constexpr CoordManager_t< Vector > NoCoordManager { nullptr, nullptr }
 

Typedef Documentation

template<typename Vector >
using geo::vect::details::CoordinateArray_t = typedef std::array<VectorScalar_t<Vector>, dimension<Vector>()>

A STL array suitable to contain all coordinate values of a Vector.

Definition at line 158 of file geo_vectors_utils.h.

template<typename T >
using geo::vect::details::MemberFuncClass_t = typedef typename MemberFuncClassType<T>::type

Definition at line 179 of file geo_vectors_utils.h.

template<typename T >
using geo::vect::details::MemberFuncReturn_t = typedef typename MemberFuncReturnType<T>::type

Definition at line 170 of file geo_vectors_utils.h.

template<typename Vector >
using geo::vect::details::VectorIndices_t = typedef std::make_index_sequence<dimension<Vector>()>

Type of sequence of indices up to Vector size.

Definition at line 1702 of file geo_vectors_utils.h.

template<typename Vector >
using geo::vect::details::VectorScalar_t = typedef typename VectorScalar<Vector>::type

Definition at line 106 of file geo_vectors_utils.h.

Function Documentation

template<std::size_t I, typename Data >
constexpr auto geo::vect::details::accessElement ( Data &&  data)

Definition at line 1726 of file geo_vectors_utils.h.

1726 { return data[I]; }
see a below echo or echo I(indirect symbol).'echo" If the symbol is local (non-external)
template<typename T >
constexpr T&& geo::vect::details::constexpr_forward ( std::remove_reference_t< T > &  t)

Definition at line 1664 of file geo_vectors_utils.h.

1665  { return static_cast<T&&>(t); }
template<typename T >
constexpr T&& geo::vect::details::constexpr_forward ( std::remove_reference_t< T > &&  t)

Definition at line 1668 of file geo_vectors_utils.h.

1669  {
1670  static_assert(!std::is_lvalue_reference<T>(),
1671  "template argument substituting T is an lvalue reference type");
1672  return static_cast<T&&>(t);
1673  }
template<typename Vector >
constexpr unsigned int geo::vect::details::dimension ( )
template<typename Op , typename... T>
auto geo::vect::details::extended_accumulate ( Op  op,
T &&...  args 
)

Definition at line 78 of file geo_vectors_utils.h.

template<typename... T>
auto geo::vect::details::extended_and ( T...  args) -> decltype(auto)

Definition at line 83 of file geo_vectors_utils.h.

84  {
85  auto and_op = [](auto&& a, auto&& b) { return a && b; };
86  return extended_accumulate(and_op, std::forward<T>(args)...);
87  }
process_name gaushit a
auto extended_accumulate(Op op, T &&...args)
template<typename Vector >
constexpr bool geo::vect::details::HasT ( )
template<typename Vector >
constexpr bool geo::vect::details::HasX ( )
template<typename Vector >
constexpr bool geo::vect::details::HasY ( )
template<typename Vector >
constexpr bool geo::vect::details::HasZ ( )
template<typename Point , std::size_t... I>
bool geo::vect::details::isfiniteImpl ( Point const &  point,
std::index_sequence< I...>   
)

Definition at line 2011 of file geo_vectors_utils.h.

2012  { return extended_and(std::isfinite(coord(point, I).get())...); }
see a below echo or echo I(indirect symbol).'echo" If the symbol is local (non-external)
auto coord(Vector &v, unsigned int n) noexcept
Returns an object to manage the coordinate n of a vector.
bool isfinite(Vector const &v)
Returns whether all components of the vector are finite.
auto extended_and(T...args) -> decltype(auto)
template<typename Getter , typename Setter >
constexpr auto geo::vect::details::makeCoordManager ( Getter  getter,
Setter  setter 
)

Definition at line 305 of file geo_vectors_utils.h.

306  {
307  using Vector_t = std::remove_reference_t<MemberFuncClass_t<Getter>>;
308  return CoordManager<Vector_t, Setter>{getter, setter};
309  }
Helper class for read/write of a single vector coordinate.
recob::tracking::Vector_t Vector_t
template<typename Getter >
constexpr auto geo::vect::details::makeCoordReader ( Getter  getter)

Definition at line 246 of file geo_vectors_utils.h.

247  {
248  using Vector_t = std::remove_reference_t<MemberFuncClass_t<Getter>>;
249  return CoordGetter<Vector_t>{ getter };
250  }
Helper class for read of a single vector coordinate.
recob::tracking::Vector_t Vector_t
template<typename Vector , typename Coords , std::size_t... Indices>
constexpr Vector geo::vect::details::makeFromCoordsImpl ( Coords &&  coords,
std::index_sequence< Indices...>   
)

Definition at line 1730 of file geo_vectors_utils.h.

1731  {
1732  return
1733  { accessElement<Indices>(constexpr_forward<Coords>(coords))... };
1734  }
template<typename T , T N>
constexpr auto geo::vect::details::makeIndexSeq ( )

Definition at line 1720 of file geo_vectors_utils.h.

1721  { return makeIndexSeqImpl<T>(std::make_integer_sequence<T, N>{}); }
template<typename T , T... Indices>
constexpr auto geo::vect::details::makeIndexSeqImpl ( std::integer_sequence< T, Indices...>  )

Definition at line 1713 of file geo_vectors_utils.h.

1716  { return std::array<T, sizeof...(Indices)>{{ Indices... }}; }
then echo ***************************************echo array
Definition: find_fhicl.sh:28
template<typename Vector >
constexpr auto geo::vect::details::makeVectorIndices ( )

Definition at line 1705 of file geo_vectors_utils.h.

1705 { return VectorIndices_t<Vector>{}; }
std::make_index_sequence< dimension< Vector >()> VectorIndices_t
Type of sequence of indices up to Vector size.
template<typename Vector >
constexpr auto geo::vect::details::makeVectorIndices ( Vector &&  )

Definition at line 1708 of file geo_vectors_utils.h.

1709  { return makeVectorIndices<Vector>(); }

Variable Documentation

template<typename Vector >
constexpr CoordManager_t<Vector> geo::vect::details::NoCoordManager { nullptr, nullptr }

Definition at line 1739 of file geo_vectors_utils.h.