The Gaudi Framework  v31r0 (aeb156f0)
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)
 
const std::stringinputLocation (unsigned int n) const
 
unsigned int inputLocationSize () const
 
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< InputHandle_t< In > > m_inputs
 
Gaudi::Property< std::vector< std::string > > m_inputLocations
 

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 57 of file MergingTransformer.h.

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

Definition at line 26 of file MergingTransformer.h.

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

Definition at line 27 of file MergingTransformer.h.

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

Definition at line 9 of file ListTransformer.h.

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

Definition at line 21 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:312
std::string concat_alternatives(const Strings &...s)
template<typename Signature , typename Traits_ = Traits::useDefaults>
struct Gaudi::Functional::deprecated ( "use MergingTransformer instead"  )

Definition at line 11 of file ListTransformer.h.

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

Definition at line 37 of file MergingTransformer.h.

37  {
38  vector_of_const_<In> ins;
39  ins.reserve( m_inputs.size() );
40  std::transform( m_inputs.begin(), m_inputs.end(), std::back_inserter( ins ),
41  details::details2::get_from_handle<In>{} );
42  try {
43  using details::as_const;
44  details::put( std::get<0>( this->m_outputs ), as_const( *this )( as_const( ins ) ) );
45  } catch ( GaudiException& e ) {
46  ( e.code() ? this->warning() : this->error() ) << e.message() << endmsg;
47  return e.code();
48  }
49  return StatusCode::SUCCESS;
50  }
Define general base for Gaudi exception.
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
virtual const StatusCode & code() const
StatusCode for Exception.
constexpr std::add_const_t< T > & as_const(T &t) noexcept
std::vector< InputHandle_t< In > > m_inputs
T back_inserter(T...args)
T transform(T...args)
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
Out1 * put(DataObjectHandle< Out1 > &out_handle, Out2 &&out)
const std::string& Gaudi::Functional::inputLocation ( unsigned int  n) const

Definition at line 33 of file MergingTransformer.h.

33 { return m_inputLocations.value()[n]; }
Gaudi::Property< std::vector< std::string > > m_inputLocations
unsigned int Gaudi::Functional::inputLocationSize ( ) const

Definition at line 34 of file MergingTransformer.h.

34 { return m_inputLocations.value().size(); }
Gaudi::Property< std::vector< std::string > > m_inputLocations
Gaudi::Functional::MergingTransformer< Out, In, Traits_ >::MergingTransformer ( const std::string name,
ISvcLocator locator,
const KeyValues inputs,
const KeyValue output 
)

Definition at line 65 of file MergingTransformer.h.

69  : base_class( name, pSvcLocator, output )
70  , m_inputLocations{this, inputs.first, inputs.second,
72  this->m_inputs =
73  details::make_vector_of_handles<decltype( this->m_inputs )>( this, m_inputLocations );
74  if ( std::is_pointer<In>::value ) { // handle constructor does not (yet) allow to set
75  // optional flag... so do it
76  // explicitly here...
77  std::for_each( this->m_inputs.begin(), this->m_inputs.end(),
78  []( auto& h ) { h.setOptional( true ); } );
79  }
80  },
Gaudi::Property< std::vector< std::string > > m_inputLocations
Gaudi::tagged_bool< class ImmediatelyInvokeHandler_tag > ImmediatelyInvokeHandler
Definition: Property.h:141
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: Property.h:32
std::vector< InputHandle_t< In > > m_inputs
T for_each(T...args)
Handles make_vector_of_handles(IDataHandleHolder *owner, const std::vector< std::string > &init)
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.

33  {
35  GaudiUtils::details::ostream_joiner( ss << '[', newLocs, ", ", []( std::ostream & os, const auto& i ) -> auto& {
36  return os << "'" << i << "'";
37  } ) << ']';
38  auto sc = parent.setProperty( prop, ss.str() );
39  if ( sc.isFailure() ) throw GaudiException( "Could not set Property", prop + " -> " + ss.str(), sc );
40  }
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:37
STL class.
void Gaudi::Functional::updateReadHandleLocation ( IProperty parent,
const std::string prop,
const std::string newLoc 
)
inline

Definition at line 43 of file FunctionalUtilities.h.

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

Variable Documentation

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

Definition at line 59 of file MergingTransformer.h.

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

Definition at line 58 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 21 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 21 of file MergingTransformer.h.