LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag > Class Template Reference

Helper to create a proxy as auxiliary data for another proxy. More...

#include "WithProxyAsAuxStructBase.h"

Public Member Functions

 WithProxyAsAuxStructBase (ArgTuple &&args)
 
template<typename CollProxy , typename Event , typename Handle , typename MainArgs >
auto createAuxProxyMaker (Event const &event, Handle &&mainHandle, MainArgs const &mainArgs)
 Creates the associated data proxy by means of ProxyAsAuxProxyMaker. More...
 

Protected Member Functions

template<typename CollProxy , typename Event , typename Handle , typename MainArgs , std::size_t... I>
auto createAuxProxyImpl (Event const &event, Handle &&mainHandle, MainArgs const &mainArgs, std::index_sequence< I... >)
 

Protected Attributes

ArgTuple args
 Argument construction storage as tuple. More...
 

Static Protected Attributes

static constexpr std::size_t NArgs = std::tuple_size<ArgTuple>()
 Number of arguments stored. More...
 

Private Types

template<typename CollProxy >
using main_t = typename CollProxy::main_element_t
 Type of main data product element from a proxy of type CollProxy. More...
 
using aux_proxy_t = AuxProxy
 Type of auxiliary proxy. More...
 
using tag = AuxTag
 Tag for the associated data (same as the data type itself). More...
 
template<typename CollProxy >
using proxy_maker_t = ProxyAsAuxProxyMaker< main_t< CollProxy >, aux_proxy_t, CollProxy, tag >
 Class to create the data proxy associated to a CollProxy. More...
 

Detailed Description

template<typename AuxProxy, typename ArgTuple, typename AuxTag = AuxProxy>
class proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag >

Helper to create a proxy as auxiliary data for another proxy.

Template Parameters
AuxProxytype of collection proxy associated to the main one
ArgTupletype of arguments required for the creation of proxy
AuxTagtag for the associated data (default: as Aux)

This class stores user arguments for the construction of a collection proxy to be used as auxiliary data for another proxy. It can use those arguments plus some additional one to create the collection proxy data itself. This additional information is provided by getCollection().

The auxiliary data will be identified by type AuxTag.

This is not a customization point: to have a custom associated data produced, choose and then specialize the ProxyAsAuxProxyMaker class.

Definition at line 58 of file WithProxyAsAuxStructBase.h.

Member Typedef Documentation

template<typename AuxProxy, typename ArgTuple, typename AuxTag = AuxProxy>
using proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag >::aux_proxy_t = AuxProxy
private

Type of auxiliary proxy.

Definition at line 71 of file WithProxyAsAuxStructBase.h.

template<typename AuxProxy, typename ArgTuple, typename AuxTag = AuxProxy>
template<typename CollProxy >
using proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag >::main_t = typename CollProxy::main_element_t
private

Type of main data product element from a proxy of type CollProxy.

Definition at line 68 of file WithProxyAsAuxStructBase.h.

template<typename AuxProxy, typename ArgTuple, typename AuxTag = AuxProxy>
template<typename CollProxy >
using proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag >::proxy_maker_t = ProxyAsAuxProxyMaker<main_t<CollProxy>, aux_proxy_t, CollProxy, tag>
private

Class to create the data proxy associated to a CollProxy.

Definition at line 79 of file WithProxyAsAuxStructBase.h.

template<typename AuxProxy, typename ArgTuple, typename AuxTag = AuxProxy>
using proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag >::tag = AuxTag
private

Tag for the associated data (same as the data type itself).

Definition at line 74 of file WithProxyAsAuxStructBase.h.

Constructor & Destructor Documentation

template<typename AuxProxy, typename ArgTuple, typename AuxTag = AuxProxy>
proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag >::WithProxyAsAuxStructBase ( ArgTuple &&  args)
inline

Constructor: steals the arguments, to be used by createAuxProxyMaker().

Definition at line 85 of file WithProxyAsAuxStructBase.h.

References proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag >::createAuxProxyMaker().

85 : args(std::move(args)) {}
ArgTuple args
Argument construction storage as tuple.

Member Function Documentation

template<typename AuxProxy, typename ArgTuple, typename AuxTag = AuxProxy>
template<typename CollProxy , typename Event , typename Handle , typename MainArgs , std::size_t... I>
auto proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag >::createAuxProxyImpl ( Event const &  event,
Handle &&  mainHandle,
MainArgs const &  mainArgs,
std::index_sequence< I... >   
)
inlineprotected

Definition at line 112 of file WithProxyAsAuxStructBase.h.

References proxy::ProxyAsAuxProxyMakerBase< Main, AuxProxy, Tag >::make().

116  {
118  event, mainHandle, mainArgs,
119  std::get<I>(std::forward<ArgTuple>(args))...
120  );
121  }
ArgTuple args
Argument construction storage as tuple.
static auto make(Event const &event, Handle &&, MainArgs const &, art::InputTag const &auxProxyTag, AuxArgs &&...args)
Create a parallel data proxy collection using the specified tag.
Event finding and building.
template<typename AuxProxy, typename ArgTuple, typename AuxTag = AuxProxy>
template<typename CollProxy , typename Event , typename Handle , typename MainArgs >
auto proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag >::createAuxProxyMaker ( Event const &  event,
Handle &&  mainHandle,
MainArgs const &  mainArgs 
)
inline

Creates the associated data proxy by means of ProxyAsAuxProxyMaker.

Definition at line 91 of file WithProxyAsAuxStructBase.h.

Referenced by proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag >::WithProxyAsAuxStructBase().

92  {
93  return createAuxProxyImpl<CollProxy>(
94  event, std::forward<Handle>(mainHandle), mainArgs,
95  std::make_index_sequence<NArgs>()
96  );
97  } // construct()
Event finding and building.

Member Data Documentation

template<typename AuxProxy, typename ArgTuple, typename AuxTag = AuxProxy>
ArgTuple proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag >::args
protected

Argument construction storage as tuple.

Definition at line 102 of file WithProxyAsAuxStructBase.h.

template<typename AuxProxy, typename ArgTuple, typename AuxTag = AuxProxy>
constexpr std::size_t proxy::details::WithProxyAsAuxStructBase< AuxProxy, ArgTuple, AuxTag >::NArgs = std::tuple_size<ArgTuple>()
staticprotected

Number of arguments stored.

Definition at line 105 of file WithProxyAsAuxStructBase.h.


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