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
Line 
1Namespace System
2
3
4Class _SimpleDelegate
5Public
6 hasThisPtr As Boolean
7 object As Object
8 methodPtr As VoidPtr
9
10 Sub _SimpleDelegate( object As Object, methodPtr As VoidPtr )
11 This.hasThisPtr = True
12 This.object = object
13 This.methodPtr = methodPtr
14 End Sub
15 Sub _SimpleDelegate( methodPtr As VoidPtr )
16 This.hasThisPtr = False
17 This.object = Nothing
18 This.methodPtr = methodPtr
19 End Sub
20End Class
21
22Class DelegateBase
23Protected
24 simpleDelegates As System.Collections.Generic.List<_SimpleDelegate>
25
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
33Public
34 Sub DelegateBase()
35 simpleDelegates = New System.Collections.Generic.List<_SimpleDelegate>()
36 End Sub
37
38/*
39 Sub Operator + ( sd As System._SimpleDelegate )
40 Add( sd )
41 End Sub*/
42Public
43End Class
44
45
46End Namespace
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.