Midge  v3.9.2
Data Processing Framework
node.hh
Go to the documentation of this file.
1 #ifndef _midge_node_hh_
2 #define _midge_node_hh_
3 
4 #include "diptera.hh"
5 #include "input.hh"
6 #include "instructable.hh"
7 #include "output.hh"
8 #include "shared_cancel.hh"
9 #include "signal_slot.hh"
10 
11 #include "cancelable.hh"
12 #include "factory.hh"
13 
14 #include <map>
15 #include <string>
16 
17 namespace midge
18 {
19 
20  class node : public scarab::cancelable, public instructable
21  {
22  friend class signal;
23  friend class slot;
24 
25  public:
26  node();
27  virtual ~node();
28 
29  public:
30  mv_accessible( string_t, name );
31 
32  public:
33  virtual void initialize() = 0;
34  virtual void execute( diptera* ) = 0;
35  virtual void finalize() = 0;
36 
37  public:
38  node* node_ptr( const std::string& p_label );
39  input* in( const std::string& p_label );
40  output* out( const std::string& p_label );
41  signal* signal_ptr( const std::string& p_label );
42  slot* slot_ptr( const std::string& p_label );
43 
44  void node_ptr( node*, const std::string& p_label );
45 
46  protected:
47  void in( input*, const std::string& p_label );
48  void out( output*, const std::string& p_label );
49  void signal_ptr( signal*, const std::string& p_label );
50  void slot_ptr( slot*, const std::string& p_label );
51 
52  private:
53  typedef std::map< std::string, node* > node_map;
54  typedef node_map::iterator node_it;
55  typedef node_map::const_iterator node_cit;
56  typedef node_map::value_type node_entry;
57 
58  node_map f_node_map;
59 
60  typedef std::map< std::string, input* > input_map;
61  typedef input_map::iterator input_it;
62  typedef input_map::const_iterator input_cit;
63  typedef input_map::value_type input_entry;
64 
65  input_map f_input_map;
66 
67  typedef std::map< std::string, output* > output_map;
68  typedef output_map::iterator output_it;
69  typedef output_map::const_iterator output_cit;
70  typedef output_map::value_type output_entry;
71 
72  output_map f_output_map;
73 
74  typedef std::map< std::string, signal* > signal_map;
75  typedef signal_map::iterator signal_it;
76  typedef signal_map::const_iterator signal_cit;
77  typedef signal_map::value_type signal_entry;
78 
79  signal_map f_signal_map;
80 
81  typedef std::map< std::string, slot* > slot_map;
82  typedef slot_map::iterator slot_it;
83  typedef slot_map::const_iterator slot_cit;
84  typedef slot_map::value_type slot_entry;
85 
86  slot_map f_slot_map;
87 
88  protected:
89  void do_cancellation( int a_node ) override;
90  };
91 
92 }
93 
94 #define REGISTER_NODE( node_class, node_name ) \
95  static ::scarab::registrar< ::midge::node, node_class > s_node_##node_class##_registrar( node_name );
96 
97 #endif
Definition: _buffer.hh:11
signal_map::iterator signal_it
Definition: node.hh:75
slot_map::iterator slot_it
Definition: node.hh:82
std::map< std::string, output *> output_map
Definition: node.hh:67
node_map::const_iterator node_cit
Definition: node.hh:55
std::map< std::string, slot *> slot_map
Definition: node.hh:81
node()
Definition: node.cc:11
output_map f_output_map
Definition: node.hh:72
std::map< std::string, node *> node_map
Definition: node.hh:53
virtual ~node()
Definition: node.cc:19
void do_cancellation(int a_node) override
Definition: node.cc:151
output_map::iterator output_it
Definition: node.hh:68
signal * signal_ptr(const std::string &p_label)
Definition: node.cc:62
input * in(const std::string &p_label)
Definition: node.cc:42
virtual void execute(diptera *)=0
node * node_ptr(const std::string &p_label)
Definition: node.cc:32
slot_map f_slot_map
Definition: node.hh:86
slot_map::value_type slot_entry
Definition: node.hh:84
signal_map::const_iterator signal_cit
Definition: node.hh:76
input_map::const_iterator input_cit
Definition: node.hh:62
node_map f_node_map
Definition: node.hh:58
output_map::value_type output_entry
Definition: node.hh:70
std::map< std::string, signal *> signal_map
Definition: node.hh:74
std::string string_t
Definition: types.hh:21
node_map::iterator node_it
Definition: node.hh:54
input_map f_input_map
Definition: node.hh:65
input_map::value_type input_entry
Definition: node.hh:63
output_map::const_iterator output_cit
Definition: node.hh:69
output * out(const std::string &p_label)
Definition: node.cc:52
signal_map f_signal_map
Definition: node.hh:79
node_map::value_type node_entry
Definition: node.hh:56
signal_map::value_type signal_entry
Definition: node.hh:77
virtual void initialize()=0
std::map< std::string, input *> input_map
Definition: node.hh:60
slot * slot_ptr(const std::string &p_label)
Definition: node.cc:72
input_map::iterator input_it
Definition: node.hh:61
virtual void finalize()=0
slot_map::const_iterator slot_cit
Definition: node.hh:83