source: trunk/Include/Classes/System/Delegate.ab@ 352

Last change on this file since 352 was 352, checked in by dai, 17 years ago

System.Collections.Generic.List.RemoveAtメソッドを追加
デリゲート型に対する"-"演算子を追加

File size: 1.8 KB
RevLine 
[338]1Namespace System
2
[340]3
[338]4Class _SimpleDelegate
5Public
[340]6 hasThisPtr As Boolean
[338]7 object As Object
8 methodPtr As VoidPtr
9
10 Sub _SimpleDelegate( object As Object, methodPtr As VoidPtr )
[340]11 This.hasThisPtr = True
[338]12 This.object = object
13 This.methodPtr = methodPtr
14 End Sub
[340]15 Sub _SimpleDelegate( methodPtr As VoidPtr )
16 This.hasThisPtr = False
17 This.object = Nothing
18 This.methodPtr = methodPtr
19 End Sub
[352]20
21 Function IsEqual( sd As _SimpleDelegate ) As Boolean
22 Return ( This.hasThisPtr = sd.hasThisPtr and ObjPtr(This.object) = ObjPtr(sd.object) and This.methodPtr = sd.methodPtr )
23 End Function
[338]24End Class
25
26Class DelegateBase
27Protected
28 simpleDelegates As System.Collections.Generic.List<_SimpleDelegate>
29
[340]30 Sub _Add( dg As DelegateBase )
31 Dim i As Long
32 For i=0 To ELM(dg.simpleDelegates.Count)
33 simpleDelegates.Add( dg.simpleDelegates[i] )
34 Next
35 End Sub
36
[352]37 Sub _Delete( dg As DelegateBase )
38 Dim i As Long
39 For i=0 To ELM(This.simpleDelegates.Count)
40 Dim i2 As Long
41 Dim isExist = False
42 For i2=0 To ELM(dg.simpleDelegates.Count)
43 If This.simpleDelegates[i].IsEqual( dg.simpleDelegates[i2] ) Then
44 isExist = True
45 End If
46 Next
47 If isExist Then
48 This.simpleDelegates.RemoveAt( i )
49 End If
50 Next
51 End Sub
52
[338]53Public
54 Sub DelegateBase()
55 simpleDelegates = New System.Collections.Generic.List<_SimpleDelegate>()
56 End Sub
[340]57
58/*
59 Sub Operator + ( sd As System._SimpleDelegate )
60 Add( sd )
61 End Sub*/
[338]62Public
63End Class
64
65
66End Namespace
[340]67
68
69Function _System_CreateSimpleDynamicDelegate( object As Object, methodPtr As VoidPtr ) As System._SimpleDelegate
70 Return New System._SimpleDelegate( object, methodPtr )
71End Function
72Function _System_CreateSimpleStaticDelegate( methodPtr As VoidPtr ) As System._SimpleDelegate
73 Return New System._SimpleDelegate( methodPtr )
74End Function
Note: See TracBrowser for help on using the repository browser.