Gaudi::Functional Namespace Reference

Namespaces

 details
 
 Traits
 

Classes

class  Consumer
 
class  Consumer< void(const In &...), Traits_ >
 
class  FilterPredicate
 
class  FilterPredicate< bool(const In &...), Traits_ >
 
class  MergingTransformer
 
class  MultiScalarTransformer
 
class  MultiScalarTransformer< ScalarOp, std::tuple< Out... >(const In &...), Traits_ >
 
class  MultiTransformer
 
class  MultiTransformer< std::tuple< Out... >(const In &...), Traits_ >
 
class  MultiTransformerFilter
 
class  MultiTransformerFilter< std::tuple< Out... >(const In &...), Traits_ >
 
class  Producer
 
class  ScalarTransformer
 
class  ScalarTransformer< ScalarOp, Out(const In &...), Traits_ >
 
class  SplittingTransformer
 
class  SplittingTransformer< vector_of_< Out >(const In &...), Traits_ >
 
class  Transformer
 
class  Transformer< Out(const In &...), Traits_ >
 

Typedefs

template<typename Container >
using vector_of_ = details::template vector_of_const_< Container >
 
using KeyValue = std::pair< std::string, std::string >
 
using KeyValues = std::pair< std::string, std::vector< std::string >>
 
template<typename T >
using InputHandle_t = details::InputHandle_t< Traits_, typename std::remove_pointer< T >::type >
 
template<typename Container >
using vector_of_optional_ = std::vector< boost::optional< Container >>
 

Functions

std::string concat_alternatives (std::initializer_list< std::string > c)
 
template<typename... Strings>
std::string concat_alternatives (const Strings &...s)
 
void updateHandleLocation (IProperty &parent, const std::string &prop, const std::string &newLoc)
 
void updateHandleLocations (IProperty &parent, const std::string &prop, const std::vector< std::string > &newLocs)
 
void updateReadHandleLocation (IProperty &parent, const std::string &prop, const std::string &newLoc)
 
template<typename Signature , typename Traits_ = Traits::useDefaults>
struct deprecated ("use MergingTransformer instead")]] ListTransformer
 
 MergingTransformer (const std::string &name, ISvcLocator *locator, const KeyValues &inputs, const KeyValue &output)
 
StatusCode execute () override final
 
virtual Out operator() (const vector_of_const_< In > &inputs) const =0
 

Variables

template<typename Out , typename In , typename Traits_ >
class MergingTransformer< Out(const vector_of_const_< In > Traits_
 
template<typename Out , typename In , typename Traits_ >
class MergingTransformer< Out(const vector_of_const_< In > void
 
std::vector< std::stringm_inputLocations
 
std::vector< InputHandle_t< In > > m_inputs
 

Typedef Documentation

template<typename T >
using Gaudi::Functional::InputHandle_t = typedef details::InputHandle_t<Traits_,typename std::remove_pointer<T>::type>
private

Definition at line 37 of file MergingTransformer.h.

using Gaudi::Functional::KeyValue = typedef std::pair<std::string, std::string>

Definition at line 24 of file MergingTransformer.h.

using Gaudi::Functional::KeyValues = typedef std::pair<std::string, std::vector<std::string>>

Definition at line 25 of file MergingTransformer.h.

template<typename Container >
using Gaudi::Functional::vector_of_ = typedef std::vector<Container>

Definition at line 7 of file ListTransformer.h.

template<typename Container >
using Gaudi::Functional::vector_of_optional_ = typedef std::vector<boost::optional<Container>>

Definition at line 16 of file SplittingTransformer.h.

Function Documentation

std::string Gaudi::Functional::concat_alternatives ( std::initializer_list< std::string c)
inline

Definition at line 18 of file FunctionalUtilities.h.

18  {
19  return boost::algorithm::join(c,":");
20  }
template<typename... Strings>
std::string Gaudi::Functional::concat_alternatives ( const Strings &...  s)

Definition at line 23 of file FunctionalUtilities.h.

23  {
25  }
string s
Definition: gaudirun.py:245
std::string concat_alternatives(const Strings &...s)
template<typename Signature , typename Traits_ = Traits::useDefaults>
struct Gaudi::Functional::deprecated ( "use MergingTransformer instead"  )

Definition at line 9 of file ListTransformer.h.

10  : MergingTransformer<Signature,Traits_> {
12  };
MergingTransformer(const std::string &name, ISvcLocator *locator, const KeyValues &inputs, const KeyValue &output)
StatusCode Gaudi::Functional::execute ( )
finaloverride
Gaudi::Functional::MergingTransformer< Out, In, Traits_ >::MergingTransformer ( const std::string name,
ISvcLocator locator,
const KeyValues inputs,
const KeyValue output 
)

Definition at line 44 of file MergingTransformer.h.

46  : base_class( name , pSvcLocator, output )
47  , m_inputLocations( inputs.second )
48  {
49  // TODO/FIXME: replace vector of string property + call-back with a
50  // vector<handle> property ... as soon as declareProperty can deal with that.
51  auto p = this->declareProperty( inputs.first, m_inputLocations );
52  p->declareUpdateHandler( [=](Gaudi::Details::PropertyBase&) {
53  this->m_inputs = details::make_vector_of_handles<decltype(this->m_inputs)>
55  if (std::is_pointer<In>::value) { // handle constructor does not (yet) allow to set optional flag... so do it explicitly here...
56  std::for_each( this->m_inputs.begin(), this->m_inputs.end(), [](auto& h) { h.setOptional(true); } );
57  }
58  } );
59  p->useUpdateHandler(); // invoke call-back now, to be sure the input handles are synced with the property...
60  }
Handles make_vector_of_handles(IDataHandleHolder *owner, const std::vector< std::string > &init, Gaudi::DataHandle::Mode mode)
Gaudi::Details::PropertyBase * declareProperty(const std::string &name, TYPE &value, const std::string &doc="none")
Declare a property (templated)
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
std::vector< std::string > m_inputLocations
std::vector< InputHandle_t< In > > m_inputs
T for_each(T...args)
virtual Out Gaudi::Functional::operator() ( const vector_of_const_< In > &  inputs) const
pure virtual
void Gaudi::Functional::updateHandleLocation ( IProperty parent,
const std::string prop,
const std::string newLoc 
)
inline

Definition at line 27 of file FunctionalUtilities.h.

27  {
28  auto sc = parent.setProperty(prop,newLoc);
29  if (sc.isFailure()) throw GaudiException("Could not set Property",prop + " -> " + newLoc ,sc);
30  }
Define general base for Gaudi exception.
virtual StatusCode setProperty(const Gaudi::Details::PropertyBase &p)=0
Set the property by property.
void Gaudi::Functional::updateHandleLocations ( IProperty parent,
const std::string prop,
const std::vector< std::string > &  newLocs 
)
inline

Definition at line 32 of file FunctionalUtilities.h.

32  {
34  GaudiUtils::details::ostream_joiner( ss << '[', newLocs, ", " ,
35  [](std::ostream& os, const auto& i)
36  -> auto& { return os << "'" << i << "'"; } ) << ']';
37  auto sc = parent.setProperty(prop,ss.str());
38  if (sc.isFailure()) throw GaudiException("Could not set Property",prop + " -> " + ss.str(),sc);
39  }
Define general base for Gaudi exception.
virtual StatusCode setProperty(const Gaudi::Details::PropertyBase &p)=0
Set the property by property.
Stream & ostream_joiner(Stream &os, Iterator first, Iterator last, Separator sep, OutputElement output=OutputElement{})
Definition: SerializeSTL.h:35
STL class.
void Gaudi::Functional::updateReadHandleLocation ( IProperty parent,
const std::string prop,
const std::string newLoc 
)
inline

Definition at line 42 of file FunctionalUtilities.h.

43  { return updateHandleLocation(parent,prop,newLoc); }
void updateHandleLocation(IProperty &parent, const std::string &prop, const std::string &newLoc)

Variable Documentation

std::vector<std::string> Gaudi::Functional::m_inputLocations
private

Definition at line 38 of file MergingTransformer.h.

std::vector<InputHandle_t<In> > Gaudi::Functional::m_inputs
private

Definition at line 39 of file MergingTransformer.h.

template<typename Out , typename In , typename Traits_ >
class MergingTransformer< Out(const vector_of_const_< In > Gaudi::Functional::Traits_
Initial value:
{
using base_class = details::DataHandleMixin<std::tuple<Out>,void,Traits_>
class MergingTransformer< Out(const vector_of_const_< In > void
class MergingTransformer< Out(const vector_of_const_< In > Traits_

Definition at line 19 of file MergingTransformer.h.

template<typename Out , typename In , typename Traits_ >
class MergingTransformer< Out(const vector_of_const_< In > Gaudi::Functional::void

Definition at line 19 of file MergingTransformer.h.