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

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

デリゲートを試験実装
【現状のデリゲート制約】
・ダイナミックメソッド限定
・パラメータ相違チェックは行っていない

GCHandle.allocatedメンバをListクラスに変更。
List.Removeメソッドを追加

File size: 1.2 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
[338]20End Class
21
22Class DelegateBase
23Protected
24 simpleDelegates As System.Collections.Generic.List<_SimpleDelegate>
25
[340]26 Sub _Add( dg As DelegateBase )
27 Dim i As Long
28 For i=0 To ELM(dg.simpleDelegates.Count)
29 simpleDelegates.Add( dg.simpleDelegates[i] )
30 Next
31 End Sub
32
[338]33Public
34 Sub DelegateBase()
35 simpleDelegates = New System.Collections.Generic.List<_SimpleDelegate>()
36 End Sub
[340]37
38/*
39 Sub Operator + ( sd As System._SimpleDelegate )
40 Add( sd )
41 End Sub*/
[338]42Public
43End Class
44
45
46End Namespace
[340]47
48
49Function _System_CreateSimpleDynamicDelegate( object As Object, methodPtr As VoidPtr ) As System._SimpleDelegate
50 Return New System._SimpleDelegate( object, methodPtr )
51End Function
52Function _System_CreateSimpleStaticDelegate( methodPtr As VoidPtr ) As System._SimpleDelegate
53 Return New System._SimpleDelegate( methodPtr )
54End Function
Note: See TracBrowser for help on using the repository browser.