YAPOG  0.0.1
Yet Another Pokemon Online Game
Event.hxx
Go to the documentation of this file.
1 #ifndef YAPOG_EVENT_HXX
2 # define YAPOG_EVENT_HXX
3 
4 namespace yap
5 {
6  template<typename SenderType,
7  typename ArgsType,
8  typename ReturnType>
10  : sig_ ()
11  , handlers_ ()
12  {
13  }
14 
15  template <typename SenderType,
16  typename ArgsType,
17  typename ReturnType>
19  {
20  }
21 
22  template <typename SenderType,
23  typename ArgsType,
24  typename ReturnType>
27  {
28  sig_.connect (handler);
29 
30  return *this;
31  }
32 
33  template <typename SenderType,
34  typename ArgsType,
35  typename ReturnType>
37  const String& name,
38  HandlerType handler)
39  {
40  handlers_.Add (
41  name,
42  std::shared_ptr<ConnectionType> (
43  new ConnectionType (
44  sig_.connect (handler))));
45  }
46 
47  template <typename SenderType,
48  typename ArgsType,
49  typename ReturnType>
51  const String& name)
52  {
53  handlers_.Remove (name);
54  }
55 
56  template <typename SenderType,
57  typename ArgsType,
58  typename ReturnType>
59  inline ReturnType
61  SenderType sender,
62  ArgsType args)
63  {
64  return sig_ (sender, args);
65  }
66 } // namespace yap
67 
68 #endif // YAPOG_EVENT_HXX