1
2
3
4
5
6 using System;
7 using System.Collections;
8
9 namespace System.Screen
10 {
11 public class EmptyEventArgs
12 {
13 }
14
15 public class Event<Handler, Args = EmptyEventArgs>
16 {
17 public nothrow void AddHandler(Handler handler)
18 {
19 if (Find(handlers.CBegin(), handlers.CEnd(), handler) == handlers.CEnd())
20 {
21 handlers.Add(handler);
22 }
23 }
24 public nothrow void RemoveHandler(Handler handler)
25 {
26 handlers.Remove(handler);
27 }
28 public nothrow const List<Handler>& Handlers() const
29 {
30 return handlers;
31 }
32 public void Fire() where Args is EmptyEventArgs
33 {
34 for (Handler handler : handlers)
35 {
36 handler();
37 }
38 }
39 public void Fire(Args& args)
40 {
41 for (Handler handler : handlers)
42 {
43 handler(args);
44 }
45 }
46 private List<Handler> handlers;
47 }
48 }