Mcalc  0.1
a machinist's calculator
broadcaster.hpp
Go to the documentation of this file.
1 
13 #pragma once
14 #ifndef MCALC_BROADCASTER_HPP
15 #define MCALC_BROADCASTER_HPP
16 
17 #include <vector>
18 
19 namespace mc {
20 
21  class Subscriber;
22  class Interface;
23  class Event;
24 
29  class Broadcaster {
30  private:
31  std::vector<Subscriber*> subscribers;
32  Broadcaster() : subscribers({}) {};
33 
34  public:
35  static Broadcaster* get_instance();
36  ~Broadcaster();
37  void subscribe(Subscriber* s);
38  void broadcast(Event e);
39  };
40 
45  class Event {
46 
47  public:
49  enum Type { ALL, SINGLE };
50 
51  private:
52  Event::Type event_type;
53  Interface* event_sender;
54 
55  public:
60  Event( Type t );
61 
66  Event( Interface* s );
67 
73  Event( Type t, Interface* s );
74 
76  ~Event(){};
77 
82  Event::Type type();
83 
88  Interface* sender();
89  };
90 
91 }
92 
93 #endif
Definition: broadcaster.cpp:4
Definition: broadcaster.hpp:45
Type
Definition: broadcaster.hpp:49
Definition: broadcaster.hpp:29
void broadcast(Event e)
Definition: broadcaster.cpp:19
static Broadcaster * get_instance()
Definition: broadcaster.cpp:8
~Event()
Definition: broadcaster.hpp:76
void subscribe(Subscriber *s)
Definition: broadcaster.cpp:15
Definition: interface.hpp:54
~Broadcaster()
Definition: broadcaster.cpp:13
Definition: interface.hpp:32