14#include<functional_dag/dag_interface.hpp>
19 template<
typename Out>
20 class __dag_source :
public dag_source<Out> {
22 std::function<Out *()> m_generator;
27 __dag_source(std::function<Out *()> _generator) : m_generator(_generator) {}
35 Out *
update() {
return m_generator();};
40 template<
typename In,
typename Out>
41 class __dag_node :
public dag_node<In, Out> {
43 std::function<Out *(
const In *)> m_update;
48 __dag_node(std::function<Out *(
const In *)> _update) : m_update(_update) {}
57 Out *
update(
const In *_data) {
return m_update(_data);};
69 template<
typename Out>
70 dag_source<Out> *fn_source(std::function<Out *()> _run_fn) {
71 return new __dag_source(_run_fn);
83 template<
typename In,
typename Out>
84 dag_node<In, Out> *fn_call(std::function<Out *(
const In *)> _run_fn) {
85 return new __dag_node(_run_fn);
virtual Out * update(const In *_data)=0
Translator function.
virtual Out * update()=0
Generator function to implement by the user.