source: Include/Classes/System/Diagnostics/Trace.ab@ 45

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

リスナとの関係を作った。ほとんどのメソッドがTODOになっているので、実装が必要。

File size: 3.6 KB
RevLine 
[45]1
2' リスナ
3Class TraceListener
4End Class
5
6' リスナコレクション
7Class TraceListenerCollection
8Public
9
10 '----------------------------------------------------------------
11 ' パブリック メソッド
12 '----------------------------------------------------------------
13
14 ' リスナを追加
15 Function Add( listener As TraceListener )
16 ' TODO: 実装
17 End Function
18
19 ' 複数のリスナを追加
20 Sub AddRange( listeners As TraceListenerCollection )
21 ' TODO: 実装
22 End Function
23
24 ' リストからすべてのリスナを削除
25 Sub Clear()
26 ' TODO: 実装
27 End Sub
28
29 ' 指定したリスナのインデックスを取得
30 Function IndexOf( listener As TraceListener )
31 ' TODO: 実装
32 End Function
33
34 ' リスナを挿入
35 Sub Insert( index As Long, listener As TraceListener )
36 ' TODO: 実装
37 End Sub
38
39 ' リスナを削除
40 Function Remove( name As String )
41 ' TODO: 実装
42 End Function
43 Function Remove( listener As TraceListener )
44 ' TODO: 実装
45 End Function
46
47
48 '----------------------------------------------------------------
49 ' パブリック プロパティ
50 '----------------------------------------------------------------
51
52 ' 保有するリスナの数を取得する
53 Function Count() As Long
54 ' TODO: 実装
55 End Function
56
57 ' リスナを取得する
58 Function Item( index As Long ) As TraceListener
59 ' TODO: 実装
60 End Function
61End Class
62
[43]63Class Trace
[45]64 Static indentLevel = 0 As Long
65 Static indentSize = 4 As Long
[44]66
67 Static Function GetIndentString() As String
68 Dim i As Long
[45]69
70 Dim IndentStr = ""
71 For i = 0 To ELM( indentSize )
72 IndentStr = IndentStr + " "
73 Next
74
[44]75 Dim ResultStr = ""
[45]76 For i = 0 To ELM( indentLevel )
77 ResultStr = ResultStr + IndentStr
[44]78 Next
[45]79
[44]80 Return ResultStr
81 End Function
[45]82
[43]83Public
[44]84
[45]85 '----------------------------------------------------------------
86 ' パブリック メソッド
87 '----------------------------------------------------------------
[44]88
[45]89 ' アサート(コールスタックを表示)
[44]90 Static Sub Assert( condition As Boolean )
91 If condition == False then
92 'TODO: コールスタックを表示
93 End If
94 End Sub
[45]95
96 ' アサート(メッセージ文字列を表示)
[44]97 Static Sub Assert( condition As Boolean, message As String )
98 If condition == False then
[45]99 ' TODO: メッセージボックス形式での表示に対応
[44]100 WriteLine( message )
101 End If
102 End Sub
103
[45]104 ' アサート(メッセージ文字列と詳細文字列を表示)
105 Static Sub Assert( condition As Boolean, message As String, detailMessage As String )
106 If condition == False then
107 ' TODO: メッセージボックス形式での表示に対応
108 WriteLine( message )
109 End If
110 End Sub
111
112
[44]113 ' インデントレベルを上げる
114 Static Sub Indent()
[45]115 indentLevel++
[44]116 End Sub
117
118 ' インデントレベルを下げる
119 Static Sub Unindent()
[45]120 If indentLevel <= 0 Then
121 indentLevel = 0
[44]122 Return
123 End If
[45]124 indentLevel--
[44]125 End Sub
126
127 ' 一行の文字列を出力
[43]128 Static Sub WriteLine( message As String )
[44]129 Dim tempmsg = GetIndentString() + message + Ex"\n"
[45]130
131 ' TODO: リスナへの出力を実装
[43]132 End Sub
[45]133
134
135 '----------------------------------------------------------------
136 ' パブリック プロパティ
137 '----------------------------------------------------------------
138
139 ' IndentLevelプロパティ
140 Static Function IndentLevel() As Long
141 Return indentLevel
142 End Function
143 Static Sub IndentLevel( level As Long )
144 indentLevel = level
145 End Sub
146
147 ' IndentSizeプロパティ
148 Static Function IndentSize() As Long
149 Return indentSize
150 End Function
151 Static Sub IndentSize( size As Long )
152 indentSize = size
153 End Sub
154
155 ' Listenersプロパティ
156 Static Function Listeners() As TraceListenerCollection
157 Return listeners
158 End Function
159 Static Sub Listeners( listeners As TraceListenerCollection )
160 This.listeners = listeners
161 End Sub
162
[43]163End Class
Note: See TracBrowser for help on using the repository browser.