source: Include/Classes/System/Diagnostics/base.ab@ 69

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

Trace/Debugクラスを実装(リスナ系にちょっとTODOが残っている…)。

File size: 5.8 KB
Line 
1
2Class _System_TraceBase
3 indentLevel = 0 As Long
4 indentSize = 4 As Long
5
6
7 ' リスナ管理
8 listeners As TraceListenerCollection
9
10Public
11
12 ' コンストラクタ
13 Sub _System_TraceBase()
14 Dim _System_defaultTraceListener As DefaultTraceListener
15 listeners.Add( _System_defaultTraceListener )
16 End Sub
17
18 '----------------------------------------------------------------
19 ' パブリック メソッド
20 '----------------------------------------------------------------
21
22 ' アサート(コールスタックを表示)
23 Sub Assert( condition As Boolean )
24 If condition == False then
25 'TODO: コールスタックを表示
26 End If
27 End Sub
28
29 ' アサート(メッセージ文字列を表示)
30 Sub Assert( condition As Boolean, message As String )
31 If condition == False then
32 ' TODO: メッセージボックス形式での表示に対応
33 WriteLine( message )
34 End If
35 End Sub
36
37 ' アサート(メッセージ文字列と詳細文字列を表示)
38 Sub Assert( condition As Boolean, message As String, detailMessage As String )
39 If condition == False then
40 ' TODO: メッセージボックス形式での表示に対応
41 WriteLine( message )
42 End If
43 End Sub
44
45
46 ' インデントレベルを上げる
47 Sub Indent()
48 IndentLevel = indentLevel + 1
49 End Sub
50
51 ' インデントレベルを下げる
52 Sub Unindent()
53 If indentLevel <= 0 Then
54 indentLevel = 0
55 Return
56 End If
57 IndentLevel = indentLevel - 1
58 End Sub
59
60 ' 文字列を出力
61 Sub Write( value As Object )
62 Dim i As Long
63 For i = 0 To ELM( listeners.Count )
64 Dim temp As TraceListener
65 temp = listeners[i]
66 temp.Write( value )
67 Next
68 End Sub
69 Sub Write( message As String )
70 Dim i As Long
71 For i = 0 To ELM( listeners.Count )
72 Dim temp As TraceListener
73 temp = listeners[i]
74 temp.Write( message )
75 Next
76 End Sub
77 Sub Write( value As Object, category As String )
78 Dim i As Long
79 For i = 0 To ELM( listeners.Count )
80 Dim temp As TraceListener
81 temp = listeners[i]
82 temp.Write( value, category )
83 Next
84 End Sub
85 Sub Write( message As String, category As String )
86 Dim i As Long
87 For i = 0 To ELM( listeners.Count )
88 Dim temp As TraceListener
89 temp = listeners[i]
90 temp.Write( message, category )
91 Next
92 End Sub
93
94 ' 一行の文字列を出力
95 Sub WriteLine( value As Object )
96 Dim i As Long
97 For i = 0 To ELM( listeners.Count )
98 Dim temp As TraceListener
99 temp = listeners[i]
100 temp.WriteLine( value )
101 Next
102 End Sub
103 Sub WriteLine( message As String )
104 Dim i As Long
105 For i = 0 To ELM( listeners.Count )
106 Dim temp As TraceListener
107 temp = listeners[i]
108 temp.WriteLine( message )
109 Next
110 End Sub
111 Sub WriteLine( value As Object, category As String )
112 Dim i As Long
113 For i = 0 To ELM( listeners.Count )
114 Dim temp As TraceListener
115 temp = listeners[i]
116 temp.WriteLine( value, category )
117 Next
118 End Sub
119 Sub WriteLine( message As String, category As String )
120 Dim i As Long
121 For i = 0 To ELM( listeners.Count )
122 Dim temp As TraceListener
123 temp = listeners[i]
124 temp.WriteLine( message, category )
125 Next
126 End Sub
127
128 ' 条件をもとに文字列を出力
129 Sub WriteIf( condition As Boolean, value As Object )
130 Dim i As Long
131 For i = 0 To ELM( listeners.Count )
132 Dim temp As TraceListener
133 temp = listeners[i]
134 temp.WriteIf( condition, value )
135 Next
136 End Sub
137 Sub WriteIf( condition As Boolean, message As String )
138 Dim i As Long
139 For i = 0 To ELM( listeners.Count )
140 Dim temp As TraceListener
141 temp = listeners[i]
142 temp.WriteIf( condition, message )
143 Next
144 End Sub
145 Sub WriteIf( condition As Boolean, value As Object, category As String )
146 Dim i As Long
147 For i = 0 To ELM( listeners.Count )
148 Dim temp As TraceListener
149 temp = listeners[i]
150 temp.WriteIf( condition, value, category )
151 Next
152 End Sub
153 Sub WriteIf( condition As Boolean, message As String, category As String )
154 Dim i As Long
155 For i = 0 To ELM( listeners.Count )
156 Dim temp As TraceListener
157 temp = listeners[i]
158 temp.WriteIf( condition, message, category )
159 Next
160 End Sub
161
162 ' 条件をもとに一行の文字列を出力
163 Sub WriteLineIf( condition As Boolean, value As Object )
164 Dim i As Long
165 For i = 0 To ELM( listeners.Count )
166 Dim temp As TraceListener
167 temp = listeners[i]
168 temp.WriteLineIf( condition, value )
169 Next
170 End Sub
171 Sub WriteLineIf( condition As Boolean, message As String )
172 Dim i As Long
173 For i = 0 To ELM( listeners.Count )
174 Dim temp As TraceListener
175 temp = listeners[i]
176 temp.WriteLineIf( condition, message )
177 Next
178 End Sub
179 Sub WriteLineIf( condition As Boolean, value As Object, category As String )
180 Dim i As Long
181 For i = 0 To ELM( listeners.Count )
182 Dim temp As TraceListener
183 temp = listeners[i]
184 temp.WriteLineIf( condition, value, category )
185 Next
186 End Sub
187 Sub WriteLineIf( condition As Boolean, message As String, category As String )
188 Dim i As Long
189 For i = 0 To ELM( listeners.Count )
190 Dim temp As TraceListener
191 temp = listeners[i]
192 temp.WriteLineIf( condition, message, category )
193 Next
194 End Sub
195
196
197 '----------------------------------------------------------------
198 ' パブリック プロパティ
199 '----------------------------------------------------------------
200
201 ' IndentLevelプロパティ
202 Function IndentLevel() As Long
203 Return indentLevel
204 End Function
205 Sub IndentLevel( indentLevel As Long )
206 This.indentLevel = indentLevel
207
208 Dim i As Long
209 For i = 0 To ELM( listeners.Count )
210 Dim temp As TraceListener
211 temp = listeners[i]
212 temp.IndentLevel = indentLevel
213 Next
214 End Sub
215
216 ' IndentSizeプロパティ
217 Function IndentSize() As Long
218 Return indentSize
219 End Function
220 Sub IndentSize( size As Long )
221 indentSize = size
222
223 Dim i As Long
224 For i = 0 To ELM( listeners.Count )
225 Dim temp As TraceListener
226 temp = listeners[i]
227 temp.IndentSize = indentSize
228 Next
229 End Sub
230
231 ' Listenersプロパティ
232 Function Listeners() As TraceListenerCollection
233 Return listeners
234 End Function
235
236End Class
237
Note: See TracBrowser for help on using the repository browser.