source: trunk/bin/SubOperation/templates/delegate_class.tab@ 340

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

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

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

File size: 875 bytes
Line 
1#namespace_begin#
2 Class Delegate #name#
3 Inherits System.DelegateBase
4
5 Public
6 Sub #name#()
7 End Sub
8 Sub #name#( dg As #name# )
9 Add( dg )
10 End Sub
11
12 #call_method_begin#
13 'Sub Call(...)
14 Dim i As Long
15 For i = 0 To ELM(simpleDelegates.Count)
16 Dim sd = simpleDelegates[i]
17 #result# __delegate_dynamicmethod_call(sd.methodPtr, sd.object, #params#)
18 Next
19 'End Sub
20 #call_method_end#
21
22 Sub Add( dg As #name# )
23 _Add( dg )
24 End Sub
25
26 Function Operator+ ( dg As #name# ) As #name#
27 Dim result = New #name#( This )
28 result._Add( dg )
29 Return result
30 End Function
31
32 Static Function _CreateDelegate( object As Object, methodPtr As VoidPtr ) As #name#
33 Dim dg = New #name#
34 dg.simpleDelegates.Add( New System._SimpleDelegate( object, methodPtr ) )
35 Return dg
36 End Function
37 End Class
38#namespace_end#
Note: See TracBrowser for help on using the repository browser.