1 // =================================
 2 // Copyright (c) 2024 Seppo Laakko
 3 // Distributed under the MIT license
 4 // =================================
 5 
 6 using System;
 7 using System.Collections;
 8 using System.Windows.API;
 9 using System.Concepts;
10 
11 namespace System.Windows
12 {
13     public class EmptyEventArgs
14     {
15     }
16 
17     public class Event<HandlerArgs = EmptyEventArgs>
18     {
19         public Event()
20         {
21         }
22         public ~Event()
23         {
24         }
25         public void AddHandler(Handler handler)
26         {
27             if (Find(handlers.CBegin()handlers.CEnd()handler) == handlers.CEnd())
28             {
29                 handlers.Add(handler);
30             }
31         }
32         public void RemoveHandler(Handler handler)
33         {
34             handlers.Remove(handler);
35         }
36         public const List<Handler>& Handlers() const
37         {
38             return handlers;
39         }
40         public void Fire() where Args is EmptyEventArgs
41         {
42             for (Handler handler : handlers)
43             {
44                 handler();
45             }
46         }
47         public void Fire(Args& args)
48         {
49             for (Handler handler : handlers)
50             {
51                 handler(args);
52             }
53         }
54         private List<Handler> handlers;
55     }