24 #ifndef __TPIE_PIPELINING_FACTORY_BASE_H__
25 #define __TPIE_PIPELINING_FACTORY_BASE_H__
27 #include <tpie/tpie_export.h>
28 #include <tpie/pipelining/node_set.h>
29 #include <tpie/pipelining/node.h>
36 virtual void init_node(
node & r) = 0;
87 inline void memory(
double amount) noexcept {
99 inline double memory() const noexcept {
126 void init_node(
node & r);
138 void init_sub_node(
node & r);
144 void add_default_edge(
node & r,
const node & dest)
const;
152 void add_node_set_edges(
node & r)
const;
160 inline void name(
const std::string & n, priority_type p) {
171 inline void phase_name(
const std::string & n, priority_type p) {
173 m_phaseNamePriority = p;
184 if (m_breadcrumbs.empty()) m_breadcrumbs = n;
185 else m_breadcrumbs = n +
" | " + m_breadcrumbs;
193 m_destinationKind = destination_kind::push;
201 m_destinationKind = destination_kind::pull;
204 void add_to_set(node_set s);
206 void add_dependencies(node_set s);
208 void add_forwarding_dependencies(node_set s);
213 void init_common(
node & r);
217 destination_kind::type m_destinationKind = destination_kind::none;
218 std::string m_name, m_phaseName;
219 std::string m_breadcrumbs;
220 priority_type m_namePriority = PRIORITY_NO_NAME, m_phaseNamePriority = PRIORITY_NO_NAME;
221 std::vector<factory_init_hook *> m_hooks;
222 std::vector<node_set> m_add_to_set;
223 std::vector<std::pair<node_set, bits::node_relation> > m_add_relations;
224 std::vector<std::pair<std::string, any_noncopyable> > m_forwards;
229 #endif // __TPIE_PIPELINING_FACTORY_BASE_H__