1 #ifndef WIRECELLTBB_JOINCAT 2 #define WIRECELLTBB_JOINCAT 12 template<
typename TupleType>
26 any_vector in = ih.as_any(tup);
35 template<std::
size_t N>
37 tbb::flow::graph_node*& joiner, tbb::flow::graph_node*& caller)
42 typedef tbb::flow::join_node< TupleType > tbb_join_node_type;
43 tbb_join_node_type* jn =
new tbb_join_node_type(graph);
47 typedef tbb::flow::function_node<TupleType,boost::any> joining_node;
51 tbb::flow::make_edge(*jn, *fn);
66 : m_joiner(0), m_caller(0)
68 int nin = wcnode->input_types().size();
70 Assert (nin > 0 && nin <= 3);
71 if (1 == nin) m_receiver_ports = build_joiner<1>(
graph, wcnode, m_joiner, m_caller);
72 if (2 == nin) m_receiver_ports = build_joiner<2>(
graph, wcnode, m_joiner, m_caller);
73 if (3 == nin) m_receiver_ports = build_joiner<3>(
graph, wcnode, m_joiner, m_caller);
77 return m_receiver_ports;
tbb::flow::graph_node * m_joiner
receiver_port_vector receiver_ports(tbb::flow::join_node< Tuple > &jn, std::index_sequence< Is... >)
def graph(desc, maker=maker)
std::vector< boost::any > any_vector
virtual sender_port_vector sender_ports()
receiver_port_vector build_joiner(tbb::flow::graph &graph, WireCell::INode::pointer wcnode, tbb::flow::graph_node *&joiner, tbb::flow::graph_node *&caller)
receiver_port_vector m_receiver_ports
WireCell::IJoinNodeBase::any_vector any_vector
std::shared_ptr< Interface > pointer
JoinBody(WireCell::INode::pointer wcnode)
JoinWrapper(tbb::flow::graph &graph, WireCell::INode::pointer wcnode)
WireCell::tuple_helper< TupleType > helper_type
WireCell::IJoinNodeBase::pointer m_wcnode
std::vector< receiver_type * > receiver_port_vector
tbb::flow::sender< boost::any > sender_type
virtual receiver_port_vector receiver_ports()
std::vector< sender_type * > sender_port_vector
std::shared_ptr< IJoinNodeBase > pointer
boost::any operator()(const TupleType &tup) const