Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
Listeners.cs
Go to the documentation of this file.
2
3namespace System.Data;
4
5internal sealed class Listeners<TElem> where TElem : class
6{
7 internal delegate void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
8
10
11 private readonly List<TElem> _listeners;
12
13 private readonly Func<TElem, bool> _filter;
14
15 private readonly int _objectID;
16
18
19 internal bool HasListeners => 0 < _listeners.Count;
20
22 {
23 _listeners = new List<TElem>();
25 _objectID = ObjectID;
27 }
28
29 internal void Add(TElem listener)
30 {
31 _listeners.Add(listener);
32 }
33
34 internal int IndexOfReference(TElem listener)
35 {
36 return Index.IndexOfReference(_listeners, listener);
37 }
38
39 internal void Remove(TElem listener)
40 {
41 int index = IndexOfReference(listener);
42 _listeners[index] = null;
43 if (_listenerReaderCount == 0)
44 {
47 }
48 }
49
51 {
53 if (0 >= count)
54 {
55 return;
56 }
57 int nullIndex = -1;
59 try
60 {
61 for (int i = 0; i < count; i++)
62 {
64 if (_filter(arg4))
65 {
67 continue;
68 }
69 _listeners[i] = null;
70 nullIndex = i;
71 }
72 }
73 finally
74 {
76 }
77 if (_listenerReaderCount == 0)
78 {
80 }
81 }
82
84 {
85 int num = nullIndex;
86 while (0 <= num)
87 {
88 if (_listeners[num] == null)
89 {
91 }
92 num--;
93 }
94 }
95}
void RemoveAt(int index)
Definition List.cs:824
readonly List< TElem > _listeners
Definition Listeners.cs:11
delegate void Action< T1, T2, T3, T4 >(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
int IndexOfReference(TElem listener)
Definition Listeners.cs:34
void Remove(TElem listener)
Definition Listeners.cs:39
Listeners(int ObjectID, Func< TElem, bool > notifyFilter)
Definition Listeners.cs:21
void Add(TElem listener)
Definition Listeners.cs:29
delegate TResult Func< T1, TResult >(T1 arg1)
readonly int _objectID
Definition Listeners.cs:15
void Notify< T1, T2, T3 >(T1 arg1, T2 arg2, T3 arg3, Action< TElem, T1, T2, T3 > action)
Definition Listeners.cs:50
readonly Func< TElem, bool > _filter
Definition Listeners.cs:13
void RemoveNullListeners(int nullIndex)
Definition Listeners.cs:83