LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
ProviderPack.h File Reference

Data structure containing constant pointers to classes. More...

#include <limits>
#include <tuple>
#include <type_traits>

Go to the source code of this file.

Classes

struct  lar::details::has_duplicate_types< Types >
 
struct  lar::details::SetFrom< DestPack, SourcePack, ExtractProviders >
 Implementation detail for the extraction constructor. More...
 
class  lar::ProviderPack< Providers >
 Container for a list of pointers to providers. More...
 
struct  lar::details::has_type< Target, Types >
 
struct  lar::details::has_type< Target, First, Others... >
 
struct  lar::details::has_type< Target, Target, Others... >
 
struct  lar::details::has_type< Target >
 
struct  lar::details::has_duplicate_types< Key, Types... >
 
struct  lar::details::has_duplicate_types<>
 
struct  lar::details::are_types_contained< Types >
 
struct  lar::details::are_same_types< Types >
 
struct  lar::details::are_types_contained< First, OtherTypes... >
 
struct  lar::details::are_types_contained< First >
 
struct  lar::details::is_provider_pack< T >
 
struct  lar::details::is_provider_pack< ProviderPack< Providers... > >
 
struct  lar::details::have_same_provider_types< APack, BPack >
 
struct  lar::details::have_same_provider_types< ProviderPack< AProviders... >, ProviderPack< BProviders... > >
 
struct  lar::details::findFirstMatching_answer< Match, Target, IsMatch, Candidates >
 
struct  lar::details::findFirstMatching_answer< Match, Target, true, Candidates... >
 
struct  lar::details::findFirstMatching_dispatcher< Match, Target, Candidates >
 
struct  lar::details::findFirstMatching_dispatcher< Match, Target >
 
struct  lar::details::findFirstMatching_dispatcher< Match, Target, FirstCandidate, OtherCandidates... >
 
struct  lar::details::findFirstMatching_answer< Match, Target, false, FirstCandidate, OtherCandidates... >
 
struct  lar::details::findFirstMatching_impl< Match, Target, Candidates >
 
struct  lar::details::findNextMatching_impl< NSkip, Match, Target, Candidates >
 
struct  lar::details::findNextMatching_impl< NSkip, Match, Target, FirstCandidate, OtherCandidates... >
 
struct  lar::details::findNextMatching_impl< 0U, Match, Target, FirstCandidate, OtherCandidates... >
 
struct  lar::details::findNextMatching_impl< NSkip, Match, Target >
 
struct  lar::details::findTheMatching_impl< Match, Target, Candidates >
 
struct  lar::details::is_derived_of< Derived, Base >
 
struct  lar::details::SetFrom< DestPack, SourcePack, FirstProvider, OtherProviders... >
 
struct  lar::details::SetFrom< DestPack, SourcePack >
 
struct  lar::details::ProviderPackComparerBase< APack, BPack >
 
struct  lar::details::ProviderPackComparer< APack, BPack, Providers >
 
struct  lar::details::ProviderPackComparer< APack, BPack, First, Others... >
 
struct  lar::details::ProviderPackComparer< APack, BPack, First >
 

Namespaces

 lar
 LArSoft-specific namespace.
 
 lar::details
 Namespace hiding implementation details.
 

Typedefs

template<bool Value>
using lar::details::bool_constant = std::integral_constant< bool, Value >
 
template<std::size_t Value>
using lar::details::index_constant = std::integral_constant< std::size_t, Value >
 

Functions

template<typename Derived , typename... Bases>
constexpr std::size_t lar::details::indexOfBaseOf ()
 Index of the class among Bases which is base of Derived. More...
 
template<typename Derived , typename... Bases>
constexpr std::size_t lar::details::indexOfDerivedFrom ()
 
template<typename Derived , typename... Bases>
constexpr std::size_t lar::details::findBaseOf ()
 Index of the class among Bases which is base of Derived. More...
 
template<typename Derived , typename... Bases>
constexpr std::size_t lar::details::findDerivedFrom ()
 
template<typename Derived , typename... Bases>
constexpr std::size_t lar::details::hasBaseOf ()
 Returns whether there is exactly one base class of Derived among Bases. More...
 
template<typename Derived , typename... Bases>
constexpr std::size_t lar::details::hasDerivedFrom ()
 
template<typename... Providers>
ProviderPack< Providers... > lar::makeProviderPack (Providers const *...providers)
 Function to create a ProviderPack from the function arguments. More...
 
template<typename... PackProviders, typename... MoreProviders>
ProviderPack< PackProviders..., MoreProviders... > lar::expandProviderPack (ProviderPack< PackProviders... > const &pack, MoreProviders const *...providers)
 Function to create a ProviderPack by adding to another. More...
 
template<typename Provider , typename APack , typename BPack >
bool lar::details::haveSameProvider (APack const &a, BPack const &b)
 

Detailed Description

Data structure containing constant pointers to classes.

Author
Gianluca Petrillo (petri.nosp@m.llo@.nosp@m.fnal..nosp@m.gov)
Date
November 20th, 2015
Version
1.0

This is a header-only library. It depends only on standard C++ and does not require additional linkage.

Definition in file ProviderPack.h.