YPC  0.2.0
engine.h
Go to the documentation of this file.
1 
9 #pragma once
10 #include <hpda/engine/functor.h>
11 #include <unordered_map>
12 #include <unordered_set>
13 #include <vector>
14 
15 namespace hpda {
16 class engine {
17 public:
20  void add_functor(functor *f);
21 
22  void remove_functor(functor * f);
23 
24  void run();
25 
26 protected:
27 
28  void build_graph();
29 
30  std::vector<functor *> find_outputs() const;
31 
32  bool contain_same_successor(functor *f1, functor *f2, functor *succ) const;
33 
34  bool functor_has_input(functor *f) const;
35 
36  bool is_output(functor *f) const;
37 
38 protected:
39  std::vector<functor *> m_functors;
40 
41  std::unordered_map<functor *, std::unordered_set<functor *>> m_successors;
42  std::unordered_map<functor *, std::unordered_set<functor *>> m_predecessors;
43  std::unordered_set<functor *> m_reach_ends;
44 };
45 } // namespace ypc
hpda::engine
Definition: engine.h:16
hpda::engine::add_functor
void add_functor(functor *f)
Definition: engine.cpp:22
hpda::functor
Definition: functor.h:7