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

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

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

File size: 4.1 KB
Line 
1
2
3' リスナコレクション
4Class TraceListenerCollection
5 ppListeners As **TraceListener
6 count As Long
7Public
8
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
20 '----------------------------------------------------------------
21 ' パブリック メソッド
22 '----------------------------------------------------------------
23
24 ' リスナを追加
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
30
31 ' 複数のリスナを追加
32 Sub AddRange( listeners As TraceListenerCollection )
33 ' TODO: 実装
34 End Sub
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
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
75 ' 保有するリスナの数を取得する
76 Function Count() As Long
77 Return count
78 End Function
79End Class
80
81Class Trace
82 Static indentLevel = 0 As Long
83 Static indentSize = 4 As Long
84
85
86 ' リスナ管理
87 Static Listeners As TraceListenerCollection
88
89Public
90
91 '----------------------------------------------------------------
92 ' パブリック メソッド
93 '----------------------------------------------------------------
94
95 ' アサート(コールスタックを表示)
96 Static Sub Assert( condition As Boolean )
97 If condition == False then
98 'TODO: コールスタックを表示
99 End If
100 End Sub
101
102 ' アサート(メッセージ文字列を表示)
103 Static Sub Assert( condition As Boolean, message As String )
104 If condition == False then
105 ' TODO: メッセージボックス形式での表示に対応
106 WriteLine( message )
107 End If
108 End Sub
109
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
119 ' インデントレベルを上げる
120 Static Sub Indent()
121 IndentLevel = indentLevel + 1
122 End Sub
123
124 ' インデントレベルを下げる
125 Static Sub Unindent()
126 If indentLevel <= 0 Then
127 indentLevel = 0
128 Return
129 End If
130 IndentLevel = indentLevel - 1
131 End Sub
132
133 Static Sub Write( message As String )
134
135 End Sub
136
137 ' 一行の文字列を出力
138 Static Sub WriteLine( message As String )
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
145 End Sub
146
147
148 '----------------------------------------------------------------
149 ' パブリック プロパティ
150 '----------------------------------------------------------------
151
152 ' IndentLevelプロパティ
153 Static Function IndentLevel() As Long
154 Return indentLevel
155 End Function
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
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
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
180 End Sub
181
182End Class
Note: See TracBrowser for help on using the repository browser.