1 #ifndef WIRECELL_ISPLITNODE 2 #define WIRECELL_ISPLITNODE 8 #include <boost/any.hpp> 21 typedef std::shared_ptr<ISplitNodeBase>
pointer;
28 virtual bool operator()(
const boost::any& anyin, any_vector& anyout) = 0;
41 template <
typename InputType,
typename OutputTuple>
56 const input_pointer& in = boost::any_cast<
const input_pointer&>(anyin);
58 output_tuple_type outtup;
59 output_helper_type oh;
61 bool ok = (*this)(in,outtup);
63 anyvout = oh.as_any(outtup);
68 virtual bool operator()(
const input_pointer& in, output_tuple_type& out) = 0;
72 return std::vector<std::string>{
typeid(input_type).
name()};
77 return oph.type_names();
tuple_helper< OutputTuple > port_helper_type
port_helper_type::template WrappedConst< std::shared_ptr >::type output_tuple_type
virtual ~ISplitNodeBase()
virtual std::vector< std::string > output_types()
std::vector< boost::any > any_vector
std::shared_ptr< const InputType > input_pointer
virtual NodeCategory category()
Return the behavior category type.
tuple_helper< output_tuple_type > output_helper_type
virtual int concurrency()
Split nodes can usually do their thing stateless.
virtual bool operator()(const boost::any &anyin, any_vector &anyvout)
The calling signature:
virtual std::vector< std::string > input_types()
std::shared_ptr< ISplitNodeBase > pointer
virtual bool operator()(const boost::any &anyin, any_vector &anyout)=0
The calling signature: