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

Last change on this file since 64 was 58, checked in by dai, 18 years ago

例外処理用に必要なコードを追加。
空間統括ファイル(index.ab)を作成。
その他クラスの調整。

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