The Gaudi Framework  v36r1 (3e2fb5a8)
DHHVisitor Class Reference

#include </builds/gaudi/Gaudi/GaudiKernel/include/GaudiKernel/DataHandleHolderVisitor.h>

Inheritance diagram for DHHVisitor:
Collaboration diagram for DHHVisitor:

Public Member Functions

 DHHVisitor (DataObjIDColl &ido, DataObjIDColl &odo)
 
const DataObjIDCollignoredInpKeys () const
 
const DataObjIDCollignoredOutKeys () const
 
void visit (const IDataHandleHolder *visitee) override
 
- Public Member Functions inherited from IDataHandleVisitor
virtual ~IDataHandleVisitor ()=default
 

Private Attributes

DataObjIDCollm_ido
 
DataObjIDCollm_odo
 
DataObjIDColl m_ign_i
 
DataObjIDColl m_ign_o
 

Detailed Description

Definition at line 18 of file DataHandleHolderVisitor.h.

Constructor & Destructor Documentation

◆ DHHVisitor()

DHHVisitor::DHHVisitor ( DataObjIDColl ido,
DataObjIDColl odo 
)

Definition at line 23 of file DataHandleHolderVisitor.cpp.

23 : m_ido( ido ), m_odo( odo ) {}

Member Function Documentation

◆ ignoredInpKeys()

const DataObjIDColl& DHHVisitor::ignoredInpKeys ( ) const
inline

Definition at line 22 of file DataHandleHolderVisitor.h.

22 { return m_ign_i; }

◆ ignoredOutKeys()

const DataObjIDColl& DHHVisitor::ignoredOutKeys ( ) const
inline

Definition at line 23 of file DataHandleHolderVisitor.h.

23 { return m_ign_o; }

◆ visit()

void DHHVisitor::visit ( const IDataHandleHolder visitee)
overridevirtual

Implements IDataHandleVisitor.

Definition at line 25 of file DataHandleHolderVisitor.cpp.

25  {
26  if ( !v ) { return; }
27 
28  // Loop over inputs and outputs of handles, extra dependiencies and objects to
29  // collect all of them.
30  // Handles and extra dependencies are those of a specific algorith or tool, while
31  // the collection of data objects also contains those of the tree of tools and
32  // algorithms below it.
33 
34  // Loop over input handles and output handles and store those with with non-empty keys
35  // in the container of input objects passed to us and the others in a container of those
36  // we ignore for debug purposes. To avoid multiple for loops, make some tuples and loop
37  // over those.
38  for ( auto& hs : {make_tuple( v->inputHandles(), std::ref( m_ido ), std::ref( m_ign_i ) ),
39  make_tuple( v->outputHandles(), std::ref( m_odo ), std::ref( m_ign_o ) )} ) {
40  for ( const auto& h : std::get<0>( hs ) ) {
41  if ( !h->objKey().empty() ) {
42  std::get<1>( hs ).emplace( h->fullKey() );
43  } else {
44  std::get<2>( hs ).emplace( h->fullKey() );
45  }
46  }
47  }
48 
49  // The containers of handles are a different type than the on of input deps and input
50  // objects, so we need another loop here.
51  // NOTE: perhaps a view from range v3 can be used to also avoid this second loop.
52  for ( auto& hs : {make_tuple( v->extraInputDeps(), std::ref( m_ido ), std::ref( m_ign_i ) ),
53  make_tuple( v->extraOutputDeps(), std::ref( m_odo ), std::ref( m_ign_o ) ),
54  make_tuple( v->inputDataObjs(), std::ref( m_ido ), std::ref( m_ign_i ) ),
55  make_tuple( v->outputDataObjs(), std::ref( m_odo ), std::ref( m_ign_o ) )} ) {
56  for ( const auto& h : std::get<0>( hs ) ) {
57  if ( !h.key().empty() ) {
58  std::get<1>( hs ).emplace( h );
59  } else {
60  std::get<2>( hs ).emplace( h );
61  }
62  }
63  }
64 }

Member Data Documentation

◆ m_ido

DataObjIDColl& DHHVisitor::m_ido
private

Definition at line 28 of file DataHandleHolderVisitor.h.

◆ m_ign_i

DataObjIDColl DHHVisitor::m_ign_i
private

Definition at line 29 of file DataHandleHolderVisitor.h.

◆ m_ign_o

DataObjIDColl DHHVisitor::m_ign_o
private

Definition at line 29 of file DataHandleHolderVisitor.h.

◆ m_odo

DataObjIDColl & DHHVisitor::m_odo
private

Definition at line 28 of file DataHandleHolderVisitor.h.


The documentation for this class was generated from the following files:
DHHVisitor::m_ign_i
DataObjIDColl m_ign_i
Definition: DataHandleHolderVisitor.h:29
std::make_tuple
T make_tuple(T... args)
DHHVisitor::m_ido
DataObjIDColl & m_ido
Definition: DataHandleHolderVisitor.h:28
DHHVisitor::m_odo
DataObjIDColl & m_odo
Definition: DataHandleHolderVisitor.h:28
AlgSequencer.h
h
Definition: AlgSequencer.py:26
HistoDumpEx.v
v
Definition: HistoDumpEx.py:27
DHHVisitor::m_ign_o
DataObjIDColl m_ign_o
Definition: DataHandleHolderVisitor.h:29
std::ref
T ref(T... args)