YPC  0.2.0
functor.h
1 #pragma once
2 #include <cstdint>
3 #include <vector>
4 
5 namespace hpda {
6 class engine;
7 class functor {
8 public:
9  functor();
10  virtual ~functor();
11  virtual bool process() = 0;
12  inline void reset_done_value() { m_has_value = false; }
13  virtual void done_value();
14  inline bool has_value() const { return m_has_value; }
15  inline engine *get_engine() const { return m_engine; }
16 
17  void set_engine(engine *e);
18 
19  inline void add_predecessor(functor *pred) { m_predecessors.push_back(pred); }
20 
21  inline const std::vector<functor *> predecessors() const {
22  return m_predecessors;
23  }
24 
25 protected:
26  bool m_has_value;
27  std::vector<functor *> m_predecessors;
28  engine *m_engine;
29 
30  friend class engine;
31  uint32_t m_status;
32 };
33 } // namespace ypc
hpda::engine
Definition: engine.h:16
hpda::functor
Definition: functor.h:7