16#include "functional_dag/core/dag_utils.hpp"
17#include "functional_dag/dag_interface.hpp"
18#include "functional_dag/impl/dag_fanout_impl.hpp"
24template <
typename Out,
typename IDType>
32template <
class Type,
class IDType>
33class _abstract_internal_dag_node {
36 virtual ~_abstract_internal_dag_node() =
default;
39 virtual const IDType &get_id() = 0;
41 virtual void run_filter(
const Type *
const _data) = 0;
43 virtual void print(
const string &_plus) = 0;
48template <
typename In,
typename Out,
typename IDType>
49class _internal_dag_node :
public _abstract_internal_dag_node<In, IDType> {
55 const IDType m_node_id;
58 const fn_dag::_dag_context
73 const fn_dag::_dag_context &_context)
77 g_context(_context) {}
80 ~_internal_dag_node() {
93 void run_filter(
const In *
const _data) {
94 unique_ptr<Out> data_out = m_node_hook->
update(_data);
95 if (!g_context.filter_off && data_out !=
nullptr)
96 m_child->fan_out(std::move(data_out));
105 void print(
const string &_indent_str) {
106 *g_context.log << m_node_id << endl;
107 m_child->print(_indent_str);
116 const IDType &get_id() {
return m_node_id; }
Internal node to take data from parent and run children.
Definition dag_node_impl.hpp:25
dag_fanout_node(const _dag_context &_context)
This node uses data computed from the previous node to fan-out to it's children.
Definition dag_fanout_impl.hpp:56
void print(const string &_indent)
Printing function.
Definition dag_fanout_impl.hpp:99
Interface for all external "mapping" lambdas.
Definition dag_interface.hpp:42
virtual unique_ptr< Out > update(const In *const _data)=0
Translator function.
Definition guid_generated.h:16