@@ -11,9 +11,9 @@ namespace Python.Runtime
11
11
internal class EventObject : ExtensionType
12
12
{
13
13
internal string name ;
14
- internal EventBinding unbound ;
14
+ internal EventBinding ? unbound ;
15
15
internal EventInfo info ;
16
- internal Hashtable reg ;
16
+ internal Hashtable ? reg ;
17
17
18
18
public EventObject ( EventInfo info )
19
19
{
@@ -25,12 +25,12 @@ public EventObject(EventInfo info)
25
25
/// <summary>
26
26
/// Register a new Python object event handler with the event.
27
27
/// </summary>
28
- internal bool AddEventHandler ( IntPtr target , IntPtr handler )
28
+ internal bool AddEventHandler ( BorrowedReference target , PyObject handler )
29
29
{
30
- object obj = null ;
31
- if ( target != IntPtr . Zero )
30
+ object ? obj = null ;
31
+ if ( target != null )
32
32
{
33
- var co = ( CLRObject ) GetManagedObject ( target ) ;
33
+ var co = ( CLRObject ) GetManagedObject ( target ) ! ;
34
34
obj = co . inst ;
35
35
}
36
36
@@ -70,18 +70,18 @@ internal bool AddEventHandler(IntPtr target, IntPtr handler)
70
70
/// <summary>
71
71
/// Remove the given Python object event handler.
72
72
/// </summary>
73
- internal bool RemoveEventHandler ( IntPtr target , IntPtr handler )
73
+ internal bool RemoveEventHandler ( BorrowedReference target , BorrowedReference handler )
74
74
{
75
75
if ( reg == null )
76
76
{
77
77
Exceptions . SetError ( Exceptions . ValueError , "unknown event handler" ) ;
78
78
return false ;
79
79
}
80
80
81
- object obj = null ;
82
- if ( target != IntPtr . Zero )
81
+ object ? obj = null ;
82
+ if ( target != null )
83
83
{
84
- var co = ( CLRObject ) GetManagedObject ( target ) ;
84
+ var co = ( CLRObject ) GetManagedObject ( target ) ! ;
85
85
obj = co . inst ;
86
86
}
87
87
@@ -100,7 +100,7 @@ internal bool RemoveEventHandler(IntPtr target, IntPtr handler)
100
100
return false ;
101
101
}
102
102
103
- object [ ] args = { null } ;
103
+ object ? [ ] args = { null } ;
104
104
MethodInfo mi = info . GetRemoveMethod ( true ) ;
105
105
106
106
for ( var i = 0 ; i < list . Count ; i ++ )
@@ -132,7 +132,7 @@ internal bool RemoveEventHandler(IntPtr target, IntPtr handler)
132
132
/// Descriptor __get__ implementation. A getattr on an event returns
133
133
/// a "bound" event that keeps a reference to the object instance.
134
134
/// </summary>
135
- public static IntPtr tp_descr_get ( IntPtr ds , IntPtr ob , IntPtr tp )
135
+ public static NewReference tp_descr_get ( BorrowedReference ds , BorrowedReference ob , BorrowedReference tp )
136
136
{
137
137
var self = GetManagedObject ( ds ) as EventObject ;
138
138
EventBinding binding ;
@@ -146,24 +146,23 @@ public static IntPtr tp_descr_get(IntPtr ds, IntPtr ob, IntPtr tp)
146
146
// an instance) we return an 'unbound' EventBinding that will
147
147
// be cached for future accesses through the type.
148
148
149
- if ( ob == IntPtr . Zero )
149
+ if ( ob == null )
150
150
{
151
151
if ( self . unbound == null )
152
152
{
153
- self . unbound = new EventBinding ( self , IntPtr . Zero ) ;
153
+ self . unbound = new EventBinding ( self , target : null ) ;
154
154
}
155
155
binding = self . unbound ;
156
- Runtime . XIncref ( binding . pyHandle ) ;
157
- return binding . pyHandle ;
156
+ return new NewReference ( binding . pyHandle ) ;
158
157
}
159
158
160
159
if ( Runtime . PyObject_IsInstance ( ob , tp ) < 1 )
161
160
{
162
161
return Exceptions . RaiseTypeError ( "invalid argument" ) ;
163
162
}
164
163
165
- binding = new EventBinding ( self , ob ) ;
166
- return binding . pyHandle ;
164
+ binding = new EventBinding ( self , new PyObject ( ob ) ) ;
165
+ return new NewReference ( binding . pyHandle ) ;
167
166
}
168
167
169
168
@@ -174,7 +173,7 @@ public static IntPtr tp_descr_get(IntPtr ds, IntPtr ob, IntPtr tp)
174
173
/// 'ob.SomeEvent += method', Python will attempt to set the attribute
175
174
/// SomeEvent on ob to the result of the '+=' operation.
176
175
/// </summary>
177
- public new static int tp_descr_set ( IntPtr ds , IntPtr ob , IntPtr val )
176
+ public static int tp_descr_set ( BorrowedReference ds , BorrowedReference ob , BorrowedReference val )
178
177
{
179
178
var e = GetManagedObject ( val ) as EventBinding ;
180
179
@@ -191,31 +190,27 @@ public static IntPtr tp_descr_get(IntPtr ds, IntPtr ob, IntPtr tp)
191
190
/// <summary>
192
191
/// Descriptor __repr__ implementation.
193
192
/// </summary>
194
- public static IntPtr tp_repr ( IntPtr ob )
193
+ public static NewReference tp_repr ( BorrowedReference ob )
195
194
{
196
- var self = ( EventObject ) GetManagedObject ( ob ) ;
195
+ var self = ( EventObject ) GetManagedObject ( ob ) ! ;
197
196
return Runtime . PyString_FromString ( $ "<event '{ self . name } '>") ;
198
197
}
199
198
200
199
201
200
protected override void Clear ( )
202
201
{
203
- if ( this . unbound is not null )
204
- {
205
- Runtime . XDecref ( this . unbound . pyHandle ) ;
206
- this . unbound = null ;
207
- }
202
+ this . unbound = null ! ;
208
203
base . Clear ( ) ;
209
204
}
210
205
}
211
206
212
207
213
208
internal class Handler
214
209
{
215
- public IntPtr hash ;
216
- public Delegate del ;
210
+ public readonly nint hash ;
211
+ public readonly Delegate del ;
217
212
218
- public Handler ( IntPtr hash , Delegate d )
213
+ public Handler ( nint hash , Delegate d )
219
214
{
220
215
this . hash = hash ;
221
216
this . del = d ;
0 commit comments