Changeset 246 for Include/Classes/System/Diagnostics
- Timestamp:
- May 12, 2007, 6:31:13 PM (18 years ago)
- Location:
- Include/Classes/System/Diagnostics
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
Include/Classes/System/Diagnostics/Debug.ab
r69 r246 1 Namespace System 2 Namespace Diagnostics 3 4 1 5 #ifdef _DEBUG 2 6 3 Class Debug4 Static base As _System_TraceBase()5 6 Public7 8 '----------------------------------------------------------------9 ' パブリック メソッド10 '----------------------------------------------------------------11 12 ' アサート(コールスタックを表示)13 Static Sub Assert( condition As Boolean )14 base.Assert( condition )15 End Sub16 17 ' アサート(メッセージ文字列を表示)18 Static Sub Assert( condition As Boolean, message As String )19 base.Assert( condition, message )20 End Sub21 22 ' アサート(メッセージ文字列と詳細文字列を表示)23 Static Sub Assert( condition As Boolean, message As String, detailMessage As String )24 base.Assert( condition, message, detailMessage )25 End Sub26 27 28 ' インデントレベルを上げる29 Static Sub Indent()30 base.Indent()31 End Sub32 33 ' インデントレベルを下げる34 Static Sub Unindent()35 base.Unindent()36 End Sub37 38 ' 文字列を出力39 Static Sub Write( value As Object )40 base.Write( value )41 End Sub42 Static Sub Write( message As String )43 base.Write( message )44 End Sub45 Static Sub Write( value As Object, category As String )46 base.Write( value, category )47 End Sub48 Static Sub Write( message As String, category As String )49 base.Write( message, category )50 End Sub51 52 ' 一行の文字列を出力53 Static Sub WriteLine( value As Object )54 base.WriteLine( value )55 End Sub56 Static Sub WriteLine( message As String )57 base.WriteLine( message )58 End Sub59 Static Sub WriteLine( value As Object, category As String )60 base.WriteLine( value, category )61 End Sub62 Static Sub WriteLine( message As String, category As String )63 base.WriteLine( message, category )64 End Sub65 66 ' 条件をもとに文字列を出力67 Static Sub WriteIf( condition As Boolean, value As Object )68 base.WriteIf( condition, value )69 End Sub70 Static Sub WriteIf( condition As Boolean, message As String )71 base.WriteIf( condition, message )72 End Sub73 Static Sub WriteIf( condition As Boolean, value As Object, category As String )74 base.WriteIf( condition, value, category )75 End Sub76 Static Sub WriteIf( condition As Boolean, message As String, category As String )77 base.WriteIf( condition, message, category )78 End Sub79 80 ' 条件をもとに一行の文字列を出力81 Static Sub WriteLineIf( condition As Boolean, message As String )82 base.WriteLineIf( condition, message )83 End Sub84 Static Sub WriteLineIf( condition As Boolean, value As Object )85 base.WriteLineIf( condition, value )86 End Sub87 Static Sub WriteLineIf( condition As Boolean, value As Object, category As String )88 base.WriteLineIf( condition, value, category )89 End Sub90 Static Sub WriteLineIf( condition As Boolean, message As String, category As String )91 base.WriteLineIf( condition, message, category )92 End Sub93 94 95 '----------------------------------------------------------------96 ' パブリック プロパティ97 '----------------------------------------------------------------98 99 ' IndentLevelプロパティ100 Static Function IndentLevel() As Long101 Return base.IndentLevel102 End Function103 Static Sub IndentLevel( indentLevel As Long )104 base.IndentLevel = indentLevel105 End Sub106 107 ' IndentSizeプロパティ108 Static Function IndentSize() As Long109 Return base.IndentSize110 End Function111 Static Sub IndentSize( size As Long )112 base.IndentSize = size113 End Sub114 115 ' Listenersプロパティ116 Static Function Listeners() As TraceListenerCollection117 Return base.Listeners118 End Function119 End Class7 Class Debug 8 Static base As _System_TraceBase() 9 10 Public 11 12 '---------------------------------------------------------------- 13 ' パブリック メソッド 14 '---------------------------------------------------------------- 15 16 ' アサート(コールスタックを表示) 17 Static Sub Assert( condition As Boolean ) 18 base.Assert( condition ) 19 End Sub 20 21 ' アサート(メッセージ文字列を表示) 22 Static Sub Assert( condition As Boolean, message As String ) 23 base.Assert( condition, message ) 24 End Sub 25 26 ' アサート(メッセージ文字列と詳細文字列を表示) 27 Static Sub Assert( condition As Boolean, message As String, detailMessage As String ) 28 base.Assert( condition, message, detailMessage ) 29 End Sub 30 31 32 ' インデントレベルを上げる 33 Static Sub Indent() 34 base.Indent() 35 End Sub 36 37 ' インデントレベルを下げる 38 Static Sub Unindent() 39 base.Unindent() 40 End Sub 41 42 ' 文字列を出力 43 Static Sub Write( value As Object ) 44 base.Write( value ) 45 End Sub 46 Static Sub Write( message As String ) 47 base.Write( message ) 48 End Sub 49 Static Sub Write( value As Object, category As String ) 50 base.Write( value, category ) 51 End Sub 52 Static Sub Write( message As String, category As String ) 53 base.Write( message, category ) 54 End Sub 55 56 ' 一行の文字列を出力 57 Static Sub WriteLine( value As Object ) 58 base.WriteLine( value ) 59 End Sub 60 Static Sub WriteLine( message As String ) 61 base.WriteLine( message ) 62 End Sub 63 Static Sub WriteLine( value As Object, category As String ) 64 base.WriteLine( value, category ) 65 End Sub 66 Static Sub WriteLine( message As String, category As String ) 67 base.WriteLine( message, category ) 68 End Sub 69 70 ' 条件をもとに文字列を出力 71 Static Sub WriteIf( condition As Boolean, value As Object ) 72 base.WriteIf( condition, value ) 73 End Sub 74 Static Sub WriteIf( condition As Boolean, message As String ) 75 base.WriteIf( condition, message ) 76 End Sub 77 Static Sub WriteIf( condition As Boolean, value As Object, category As String ) 78 base.WriteIf( condition, value, category ) 79 End Sub 80 Static Sub WriteIf( condition As Boolean, message As String, category As String ) 81 base.WriteIf( condition, message, category ) 82 End Sub 83 84 ' 条件をもとに一行の文字列を出力 85 Static Sub WriteLineIf( condition As Boolean, message As String ) 86 base.WriteLineIf( condition, message ) 87 End Sub 88 Static Sub WriteLineIf( condition As Boolean, value As Object ) 89 base.WriteLineIf( condition, value ) 90 End Sub 91 Static Sub WriteLineIf( condition As Boolean, value As Object, category As String ) 92 base.WriteLineIf( condition, value, category ) 93 End Sub 94 Static Sub WriteLineIf( condition As Boolean, message As String, category As String ) 95 base.WriteLineIf( condition, message, category ) 96 End Sub 97 98 99 '---------------------------------------------------------------- 100 ' パブリック プロパティ 101 '---------------------------------------------------------------- 102 103 ' IndentLevelプロパティ 104 Static Function IndentLevel() As Long 105 Return base.IndentLevel 106 End Function 107 Static Sub IndentLevel( indentLevel As Long ) 108 base.IndentLevel = indentLevel 109 End Sub 110 111 ' IndentSizeプロパティ 112 Static Function IndentSize() As Long 113 Return base.IndentSize 114 End Function 115 Static Sub IndentSize( size As Long ) 116 base.IndentSize = size 117 End Sub 118 119 ' Listenersプロパティ 120 Static Function Listeners() As TraceListenerCollection 121 Return base.Listeners 122 End Function 123 End Class 120 124 121 125 #else 122 126 123 Class Debug124 Static base As _System_TraceBase()125 126 Public127 128 '----------------------------------------------------------------129 ' パブリック メソッド130 '----------------------------------------------------------------131 132 ' アサート(コールスタックを表示)133 Static Sub Assert( condition As Boolean )134 'base.Assert( condition )135 End Sub136 137 ' アサート(メッセージ文字列を表示)138 Static Sub Assert( condition As Boolean, message As String )139 'base.Assert( condition, message )140 End Sub141 142 ' アサート(メッセージ文字列と詳細文字列を表示)143 Static Sub Assert( condition As Boolean, message As String, detailMessage As String )144 'base.Assert( condition, message, detailMessage )145 End Sub146 147 148 ' インデントレベルを上げる149 Static Sub Indent()150 base.Indent()151 End Sub152 153 ' インデントレベルを下げる154 Static Sub Unindent()155 base.Unindent()156 End Sub157 158 ' 文字列を出力159 Static Sub Write( value As Object )160 'base.Write( value )161 End Sub162 Static Sub Write( message As String )163 'base.Write( message )164 End Sub165 Static Sub Write( value As Object, category As String )166 'base.Write( value, category )167 End Sub168 Static Sub Write( message As String, category As String )169 'base.Write( message, category )170 End Sub171 172 ' 一行の文字列を出力173 Static Sub WriteLine( value As Object )174 'base.WriteLine( value )175 End Sub176 Static Sub WriteLine( message As String )177 'base.WriteLine( message )178 End Sub179 Static Sub WriteLine( value As Object, category As String )180 'base.WriteLine( value, category )181 End Sub182 Static Sub WriteLine( message As String, category As String )183 'base.WriteLine( message, category )184 End Sub185 186 ' 条件をもとに文字列を出力187 Static Sub WriteIf( condition As Boolean, value As Object )188 'base.WriteIf( condition, value )189 End Sub190 Static Sub WriteIf( condition As Boolean, message As String )191 'base.WriteIf( condition, message )192 End Sub193 Static Sub WriteIf( condition As Boolean, value As Object, category As String )194 'base.WriteIf( condition, value, category )195 End Sub196 Static Sub WriteIf( condition As Boolean, message As String, category As String )197 'base.WriteIf( condition, message, category )198 End Sub199 200 ' 条件をもとに一行の文字列を出力201 Static Sub WriteLineIf( condition As Boolean, message As String )202 'base.WriteLineIf( condition, message )203 End Sub204 Static Sub WriteLineIf( condition As Boolean, value As Object )205 'base.WriteLineIf( condition, value )206 End Sub207 Static Sub WriteLineIf( condition As Boolean, value As Object, category As String )208 'base.WriteLineIf( condition, value, category )209 End Sub210 Static Sub WriteLineIf( condition As Boolean, message As String, category As String )211 'base.WriteLineIf( condition, message, category )212 End Sub213 214 215 '----------------------------------------------------------------216 ' パブリック プロパティ217 '----------------------------------------------------------------218 219 ' IndentLevelプロパティ220 Static Function IndentLevel() As Long221 Return base.IndentLevel222 End Function223 Static Sub IndentLevel( indentLevel As Long )224 base.IndentLevel = indentLevel225 End Sub226 227 ' IndentSizeプロパティ228 Static Function IndentSize() As Long229 Return base.IndentSize230 End Function231 Static Sub IndentSize( size As Long )232 base.IndentSize = size233 End Sub234 235 ' Listenersプロパティ236 Static Function Listeners() As TraceListenerCollection237 Return base.Listeners238 End Function239 End Class127 Class Debug 128 Static base As _System_TraceBase() 129 130 Public 131 132 '---------------------------------------------------------------- 133 ' パブリック メソッド 134 '---------------------------------------------------------------- 135 136 ' アサート(コールスタックを表示) 137 Static Sub Assert( condition As Boolean ) 138 'base.Assert( condition ) 139 End Sub 140 141 ' アサート(メッセージ文字列を表示) 142 Static Sub Assert( condition As Boolean, message As String ) 143 'base.Assert( condition, message ) 144 End Sub 145 146 ' アサート(メッセージ文字列と詳細文字列を表示) 147 Static Sub Assert( condition As Boolean, message As String, detailMessage As String ) 148 'base.Assert( condition, message, detailMessage ) 149 End Sub 150 151 152 ' インデントレベルを上げる 153 Static Sub Indent() 154 base.Indent() 155 End Sub 156 157 ' インデントレベルを下げる 158 Static Sub Unindent() 159 base.Unindent() 160 End Sub 161 162 ' 文字列を出力 163 Static Sub Write( value As Object ) 164 'base.Write( value ) 165 End Sub 166 Static Sub Write( message As String ) 167 'base.Write( message ) 168 End Sub 169 Static Sub Write( value As Object, category As String ) 170 'base.Write( value, category ) 171 End Sub 172 Static Sub Write( message As String, category As String ) 173 'base.Write( message, category ) 174 End Sub 175 176 ' 一行の文字列を出力 177 Static Sub WriteLine( value As Object ) 178 'base.WriteLine( value ) 179 End Sub 180 Static Sub WriteLine( message As String ) 181 'base.WriteLine( message ) 182 End Sub 183 Static Sub WriteLine( value As Object, category As String ) 184 'base.WriteLine( value, category ) 185 End Sub 186 Static Sub WriteLine( message As String, category As String ) 187 'base.WriteLine( message, category ) 188 End Sub 189 190 ' 条件をもとに文字列を出力 191 Static Sub WriteIf( condition As Boolean, value As Object ) 192 'base.WriteIf( condition, value ) 193 End Sub 194 Static Sub WriteIf( condition As Boolean, message As String ) 195 'base.WriteIf( condition, message ) 196 End Sub 197 Static Sub WriteIf( condition As Boolean, value As Object, category As String ) 198 'base.WriteIf( condition, value, category ) 199 End Sub 200 Static Sub WriteIf( condition As Boolean, message As String, category As String ) 201 'base.WriteIf( condition, message, category ) 202 End Sub 203 204 ' 条件をもとに一行の文字列を出力 205 Static Sub WriteLineIf( condition As Boolean, message As String ) 206 'base.WriteLineIf( condition, message ) 207 End Sub 208 Static Sub WriteLineIf( condition As Boolean, value As Object ) 209 'base.WriteLineIf( condition, value ) 210 End Sub 211 Static Sub WriteLineIf( condition As Boolean, value As Object, category As String ) 212 'base.WriteLineIf( condition, value, category ) 213 End Sub 214 Static Sub WriteLineIf( condition As Boolean, message As String, category As String ) 215 'base.WriteLineIf( condition, message, category ) 216 End Sub 217 218 219 '---------------------------------------------------------------- 220 ' パブリック プロパティ 221 '---------------------------------------------------------------- 222 223 ' IndentLevelプロパティ 224 Static Function IndentLevel() As Long 225 Return base.IndentLevel 226 End Function 227 Static Sub IndentLevel( indentLevel As Long ) 228 base.IndentLevel = indentLevel 229 End Sub 230 231 ' IndentSizeプロパティ 232 Static Function IndentSize() As Long 233 Return base.IndentSize 234 End Function 235 Static Sub IndentSize( size As Long ) 236 base.IndentSize = size 237 End Sub 238 239 ' Listenersプロパティ 240 Static Function Listeners() As TraceListenerCollection 241 Return base.Listeners 242 End Function 243 End Class 240 244 241 245 #endif 246 247 End Namespace 248 End Namespace -
Include/Classes/System/Diagnostics/Trace.ab
r69 r246 1 Namespace System 2 Namespace Diagnostics 1 3 2 Class Trace3 Static base As _System_TraceBase()4 Class Trace 5 Static base As _System_TraceBase() 4 6 5 Public7 Public 6 8 7 '----------------------------------------------------------------8 ' パブリック メソッド9 '----------------------------------------------------------------9 '---------------------------------------------------------------- 10 ' パブリック メソッド 11 '---------------------------------------------------------------- 10 12 11 ' アサート(コールスタックを表示)12 Static Sub Assert( condition As Boolean )13 base.Assert( condition )14 End Sub13 ' アサート(コールスタックを表示) 14 Static Sub Assert( condition As Boolean ) 15 base.Assert( condition ) 16 End Sub 15 17 16 ' アサート(メッセージ文字列を表示)17 Static Sub Assert( condition As Boolean, message As String )18 base.Assert( condition, message )19 End Sub18 ' アサート(メッセージ文字列を表示) 19 Static Sub Assert( condition As Boolean, message As String ) 20 base.Assert( condition, message ) 21 End Sub 20 22 21 ' アサート(メッセージ文字列と詳細文字列を表示)22 Static Sub Assert( condition As Boolean, message As String, detailMessage As String )23 base.Assert( condition, message, detailMessage )24 End Sub23 ' アサート(メッセージ文字列と詳細文字列を表示) 24 Static Sub Assert( condition As Boolean, message As String, detailMessage As String ) 25 base.Assert( condition, message, detailMessage ) 26 End Sub 25 27 26 28 27 ' インデントレベルを上げる28 Static Sub Indent()29 base.Indent()30 End Sub29 ' インデントレベルを上げる 30 Static Sub Indent() 31 base.Indent() 32 End Sub 31 33 32 ' インデントレベルを下げる33 Static Sub Unindent()34 base.Unindent()35 End Sub34 ' インデントレベルを下げる 35 Static Sub Unindent() 36 base.Unindent() 37 End Sub 36 38 37 ' 文字列を出力38 Static Sub Write( value As Object )39 base.Write( value )40 End Sub41 Static Sub Write( message As String )42 base.Write( message )43 End Sub44 Static Sub Write( value As Object, category As String )45 base.Write( value, category )46 End Sub47 Static Sub Write( message As String, category As String )48 base.Write( message, category )49 End Sub39 ' 文字列を出力 40 Static Sub Write( value As Object ) 41 base.Write( value ) 42 End Sub 43 Static Sub Write( message As String ) 44 base.Write( message ) 45 End Sub 46 Static Sub Write( value As Object, category As String ) 47 base.Write( value, category ) 48 End Sub 49 Static Sub Write( message As String, category As String ) 50 base.Write( message, category ) 51 End Sub 50 52 51 ' 一行の文字列を出力52 Static Sub WriteLine( value As Object )53 base.WriteLine( value )54 End Sub55 Static Sub WriteLine( message As String )56 base.WriteLine( message )57 End Sub58 Static Sub WriteLine( value As Object, category As String )59 base.WriteLine( value, category )60 End Sub61 Static Sub WriteLine( message As String, category As String )62 base.WriteLine( message, category )63 End Sub53 ' 一行の文字列を出力 54 Static Sub WriteLine( value As Object ) 55 base.WriteLine( value ) 56 End Sub 57 Static Sub WriteLine( message As String ) 58 base.WriteLine( message ) 59 End Sub 60 Static Sub WriteLine( value As Object, category As String ) 61 base.WriteLine( value, category ) 62 End Sub 63 Static Sub WriteLine( message As String, category As String ) 64 base.WriteLine( message, category ) 65 End Sub 64 66 65 ' 条件をもとに文字列を出力66 Static Sub WriteIf( condition As Boolean, value As Object )67 base.WriteIf( condition, value )68 End Sub69 Static Sub WriteIf( condition As Boolean, message As String )70 base.WriteIf( condition, message )71 End Sub72 Static Sub WriteIf( condition As Boolean, value As Object, category As String )73 base.WriteIf( condition, value, category )74 End Sub75 Static Sub WriteIf( condition As Boolean, message As String, category As String )76 base.WriteIf( condition, message, category )77 End Sub67 ' 条件をもとに文字列を出力 68 Static Sub WriteIf( condition As Boolean, value As Object ) 69 base.WriteIf( condition, value ) 70 End Sub 71 Static Sub WriteIf( condition As Boolean, message As String ) 72 base.WriteIf( condition, message ) 73 End Sub 74 Static Sub WriteIf( condition As Boolean, value As Object, category As String ) 75 base.WriteIf( condition, value, category ) 76 End Sub 77 Static Sub WriteIf( condition As Boolean, message As String, category As String ) 78 base.WriteIf( condition, message, category ) 79 End Sub 78 80 79 ' 条件をもとに一行の文字列を出力80 Static Sub WriteLineIf( condition As Boolean, message As String )81 base.WriteLineIf( condition, message )82 End Sub83 Static Sub WriteLineIf( condition As Boolean, value As Object )84 base.WriteLineIf( condition, value )85 End Sub86 Static Sub WriteLineIf( condition As Boolean, value As Object, category As String )87 base.WriteLineIf( condition, value, category )88 End Sub89 Static Sub WriteLineIf( condition As Boolean, message As String, category As String )90 base.WriteLineIf( condition, message, category )91 End Sub81 ' 条件をもとに一行の文字列を出力 82 Static Sub WriteLineIf( condition As Boolean, message As String ) 83 base.WriteLineIf( condition, message ) 84 End Sub 85 Static Sub WriteLineIf( condition As Boolean, value As Object ) 86 base.WriteLineIf( condition, value ) 87 End Sub 88 Static Sub WriteLineIf( condition As Boolean, value As Object, category As String ) 89 base.WriteLineIf( condition, value, category ) 90 End Sub 91 Static Sub WriteLineIf( condition As Boolean, message As String, category As String ) 92 base.WriteLineIf( condition, message, category ) 93 End Sub 92 94 93 95 94 '----------------------------------------------------------------95 ' パブリック プロパティ96 '----------------------------------------------------------------96 '---------------------------------------------------------------- 97 ' パブリック プロパティ 98 '---------------------------------------------------------------- 97 99 98 ' IndentLevelプロパティ99 Static Function IndentLevel() As Long100 Return base.IndentLevel101 End Function102 Static Sub IndentLevel( indentLevel As Long )103 base.IndentLevel = indentLevel104 End Sub100 ' IndentLevelプロパティ 101 Static Function IndentLevel() As Long 102 Return base.IndentLevel 103 End Function 104 Static Sub IndentLevel( indentLevel As Long ) 105 base.IndentLevel = indentLevel 106 End Sub 105 107 106 ' IndentSizeプロパティ107 Static Function IndentSize() As Long108 Return base.IndentSize109 End Function110 Static Sub IndentSize( size As Long )111 base.IndentSize = size112 End Sub108 ' IndentSizeプロパティ 109 Static Function IndentSize() As Long 110 Return base.IndentSize 111 End Function 112 Static Sub IndentSize( size As Long ) 113 base.IndentSize = size 114 End Sub 113 115 114 ' Listenersプロパティ115 Static Function Listeners() As TraceListenerCollection116 Return base.Listeners117 End Function116 ' Listenersプロパティ 117 Static Function Listeners() As TraceListenerCollection 118 Return base.Listeners 119 End Function 118 120 119 End Class 121 End Class 122 123 End Namespace 124 End Namespace -
Include/Classes/System/Diagnostics/TraceListener.ab
r147 r246 1 Namespace System 2 Namespace Diagnostics 1 3 2 ' リスナ3 Class TraceListener4 indentLevel As Long5 indentSize As Long4 ' リスナ 5 Class TraceListener 6 indentLevel As Long 7 indentSize As Long 6 8 7 Protected8 Function GetIndentString() As String9 Dim i As Long9 Protected 10 Function GetIndentString() As String 11 Dim i As Long 10 12 11 Dim IndentStr = ""12 For i = 0 To ELM( indentSize )13 IndentStr = IndentStr + " "14 Next13 Dim IndentStr = "" 14 For i = 0 To ELM( indentSize ) 15 IndentStr = IndentStr + " " 16 Next 15 17 16 Dim ResultStr = ""17 For i = 0 To ELM( indentLevel )18 ResultStr = ResultStr + IndentStr19 Next18 Dim ResultStr = "" 19 For i = 0 To ELM( indentLevel ) 20 ResultStr = ResultStr + IndentStr 21 Next 20 22 21 Return ResultStr22 End Function23 Return ResultStr 24 End Function 23 25 24 Public25 Sub TraceListener()26 indentLevel = 027 indentSize = 428 End Sub26 Public 27 Sub TraceListener() 28 indentLevel = 0 29 indentSize = 4 30 End Sub 29 31 30 ' コピーコンストラクタ31 Sub TraceListener( ByRef listener As TraceListener )32 indentLevel = listener.indentLevel33 indentSize = listener.indentSize34 End Sub32 ' コピーコンストラクタ 33 Sub TraceListener( ByRef listener As TraceListener ) 34 indentLevel = listener.indentLevel 35 indentSize = listener.indentSize 36 End Sub 35 37 36 38 37 '----------------------------------------------------------------38 ' パブリック コンストラクタ39 '----------------------------------------------------------------39 '---------------------------------------------------------------- 40 ' パブリック コンストラクタ 41 '---------------------------------------------------------------- 40 42 41 Virtual Sub Write( message As String )42 '派生クラスで実装 (基底では何もしない)43 End Sub44 Virtual Sub Write( value As Object )45 Write( value.ToString() )46 End Sub47 Virtual Sub Write( value As Object, category As String )48 Write( category + ": " + value.ToString() )49 End Sub50 Virtual Sub Write( message As String, category As String )51 Write( category + ": " + message )52 End Sub43 Virtual Sub Write( message As String ) 44 '派生クラスで実装 (基底では何もしない) 45 End Sub 46 Virtual Sub Write( value As Object ) 47 Write( value.ToString() ) 48 End Sub 49 Virtual Sub Write( value As Object, category As String ) 50 Write( category + ": " + value.ToString() ) 51 End Sub 52 Virtual Sub Write( message As String, category As String ) 53 Write( category + ": " + message ) 54 End Sub 53 55 54 Virtual Sub WriteLine( message As String )55 '派生クラスで実装 (基底では何もしない)56 End Sub57 Virtual Sub WriteLine( value As Object )58 WriteLine( value.ToString() )59 End Sub60 Virtual Sub WriteLine( value As Object, category As String )61 WriteLine( category + ": " + value.ToString() )62 End Sub63 Virtual Sub WriteLine( message As String, category As String )64 WriteLine( category + ": " + message )65 End Sub56 Virtual Sub WriteLine( message As String ) 57 '派生クラスで実装 (基底では何もしない) 58 End Sub 59 Virtual Sub WriteLine( value As Object ) 60 WriteLine( value.ToString() ) 61 End Sub 62 Virtual Sub WriteLine( value As Object, category As String ) 63 WriteLine( category + ": " + value.ToString() ) 64 End Sub 65 Virtual Sub WriteLine( message As String, category As String ) 66 WriteLine( category + ": " + message ) 67 End Sub 66 68 67 69 68 '----------------------------------------------------------------69 ' パブリック プロパティ70 '----------------------------------------------------------------70 '---------------------------------------------------------------- 71 ' パブリック プロパティ 72 '---------------------------------------------------------------- 71 73 72 ' IndentLevelプロパティ73 Function IndentLevel() As Long74 Return indentLevel75 End Function76 Sub IndentLevel( indentLevel As Long )77 This.indentLevel = indentLevel78 End Sub74 ' IndentLevelプロパティ 75 Function IndentLevel() As Long 76 Return indentLevel 77 End Function 78 Sub IndentLevel( indentLevel As Long ) 79 This.indentLevel = indentLevel 80 End Sub 79 81 80 ' IndentSizeプロパティ81 Function IndentSize() As Long82 Return indentSize83 End Function84 Sub IndentSize( size As Long )85 indentSize = size86 End Sub87 End Class82 ' IndentSizeプロパティ 83 Function IndentSize() As Long 84 Return indentSize 85 End Function 86 Sub IndentSize( size As Long ) 87 indentSize = size 88 End Sub 89 End Class 88 90 89 ' デフォルトリスナ(デバッガビューへの出力)90 Class DefaultTraceListener91 Inherits TraceListener92 Public91 ' デフォルトリスナ(デバッガビューへの出力) 92 Class DefaultTraceListener 93 Inherits TraceListener 94 Public 93 95 94 Override Sub Write( message As String )95 ' デバッグビューへ出力96 Dim tempStr = GetIndentString() + message97 OutputDebugString( tempStr )96 Override Sub Write( message As String ) 97 ' デバッグビューへ出力 98 Dim tempStr = GetIndentString() + message 99 OutputDebugString( tempStr ) 98 100 99 ' デバッグログへ書き込む100 ' TODO: 実装101 End Sub101 ' デバッグログへ書き込む 102 ' TODO: 実装 103 End Sub 102 104 103 Override Sub WriteLine( message As String ) 104 Write( GetIndentString() + message + Ex"\r\n" ) 105 End Sub 106 End Class 105 Override Sub WriteLine( message As String ) 106 Write( GetIndentString() + message + Ex"\r\n" ) 107 End Sub 108 End Class 109 110 End Namespace 111 End Namespace -
Include/Classes/System/Diagnostics/TraceListenerCollection.ab
r176 r246 1 ' リスナコレクション 2 Class TraceListenerCollection 3 pListeners As *TraceListener 4 count As Long 5 Public 1 Namespace System 2 Namespace Diagnostics 6 3 7 Sub TraceListenerCollection() 8 pListeners = _System_malloc( 1 ) 9 End Sub 10 Sub ~TraceListenerCollection() 11 _System_free( pListeners ) 12 End Sub 4 ' リスナコレクション 5 Class TraceListenerCollection 6 pListeners As *TraceListener 7 count As Long 8 Public 13 9 14 '---------------------------------------------------------------- 15 ' パブリック メソッド 16 '---------------------------------------------------------------- 10 Sub TraceListenerCollection() 11 pListeners = _System_malloc( 1 ) 12 End Sub 13 Sub ~TraceListenerCollection() 14 _System_free( pListeners ) 15 End Sub 17 16 18 ' リスナを追加 19 Sub Add( listener As TraceListener ) 20 pListeners = _System_realloc( pListeners, ( count + 1 ) * SizeOf( LONG_PTR ) ) 21 pListeners[count] = listener 22 count++ 23 End Sub 17 '---------------------------------------------------------------- 18 ' パブリック メソッド 19 '---------------------------------------------------------------- 24 20 25 ' 複数のリスナを追加 26 Sub AddRange( listeners As TraceListenerCollection ) 27 ' TODO: 実装 28 End Sub 21 ' リスナを追加 22 Sub Add( listener As TraceListener ) 23 pListeners = _System_realloc( pListeners, ( count + 1 ) * SizeOf( LONG_PTR ) ) 24 pListeners[count] = listener 25 count++ 26 End Sub 29 27 30 ' リストからすべてのリスナを削除31 Sub Clear()32 ' TODO: 実装33 End Sub28 ' 複数のリスナを追加 29 Sub AddRange( listeners As TraceListenerCollection ) 30 ' TODO: 実装 31 End Sub 34 32 35 ' 指定したリスナのインデックスを取得36 Function IndexOf( listener As TraceListener)37 ' TODO: 実装38 End Function33 ' リストからすべてのリスナを削除 34 Sub Clear() 35 ' TODO: 実装 36 End Sub 39 37 40 ' リスナを挿入41 Sub Insert( index As Long,listener As TraceListener )42 ' TODO: 実装43 End Sub38 ' 指定したリスナのインデックスを取得 39 Function IndexOf( listener As TraceListener ) 40 ' TODO: 実装 41 End Function 44 42 45 ' リスナを削除 46 Function Remove( name As String ) 47 ' TODO: 実装 48 End Function 49 Function Remove( listener As TraceListener ) 50 ' TODO: 実装 51 End Function 43 ' リスナを挿入 44 Sub Insert( index As Long, listener As TraceListener ) 45 ' TODO: 実装 46 End Sub 47 48 ' リスナを削除 49 Function Remove( name As String ) 50 ' TODO: 実装 51 End Function 52 Function Remove( listener As TraceListener ) 53 ' TODO: 実装 54 End Function 52 55 53 56 54 '----------------------------------------------------------------55 ' パブリック プロパティ56 '----------------------------------------------------------------57 '---------------------------------------------------------------- 58 ' パブリック プロパティ 59 '---------------------------------------------------------------- 57 60 58 ' インデクサ ( Getter )59 Function Operator[] ( index As Long ) As TraceListener60 If index < 0 or count <= index Then61 ' TODO: エラー処理62 debug63 End If61 ' インデクサ ( Getter ) 62 Function Operator[] ( index As Long ) As TraceListener 63 If index < 0 or count <= index Then 64 ' TODO: エラー処理 65 debug 66 End If 64 67 65 Return pListeners[index]66 End Function68 Return pListeners[index] 69 End Function 67 70 68 ' 保有するリスナの数を取得する 69 Function Count() As Long 70 Return count 71 End Function 72 End Class 71 ' 保有するリスナの数を取得する 72 Function Count() As Long 73 Return count 74 End Function 75 End Class 76 77 End Namespace 78 End Namespace -
Include/Classes/System/Diagnostics/base.ab
r207 r246 1 2 Class _System_TraceBase 3 indentLevel As Long 4 indentSize As Long 5 6 7 ' リスナ管理 8 listeners As TraceListenerCollection 9 10 Public 11 12 ' コンストラクタ 13 Sub _System_TraceBase() 14 listeners = New TraceListenerCollection 15 listeners.Add( New DefaultTraceListener() ) 16 17 indentLevel = 0 18 indentSize = 4 19 End Sub 20 21 '---------------------------------------------------------------- 22 ' パブリック メソッド 23 '---------------------------------------------------------------- 24 25 ' アサート(コールスタックを表示) 26 Sub Assert( condition As Boolean ) 27 If condition = False then 28 'TODO: コールスタックを表示 29 End If 30 End Sub 31 32 ' アサート(メッセージ文字列を表示) 33 Sub Assert( condition As Boolean, message As String ) 34 If condition = False then 35 ' TODO: メッセージボックス形式での表示に対応 36 WriteLine( message ) 37 End If 38 End Sub 39 40 ' アサート(メッセージ文字列と詳細文字列を表示) 41 Sub Assert( condition As Boolean, message As String, detailMessage As String ) 42 If condition = False then 43 ' TODO: メッセージボックス形式での表示に対応 44 WriteLine( message ) 45 End If 46 End Sub 47 48 49 ' インデントレベルを上げる 50 Sub Indent() 51 IndentLevel = indentLevel + 1 52 End Sub 53 54 ' インデントレベルを下げる 55 Sub Unindent() 56 If indentLevel <= 0 Then 57 indentLevel = 0 58 Return 59 End If 60 IndentLevel = indentLevel - 1 61 End Sub 62 63 ' 文字列を出力 64 Sub Write( value As Object ) 65 Dim i As Long 66 For i = 0 To ELM( listeners.Count ) 67 Dim listener = listeners[i] 68 listener.Write( value ) 69 Next 70 End Sub 71 Sub Write( message As String ) 72 Dim i As Long 73 For i = 0 To ELM( listeners.Count ) 74 Dim listener = listeners[i] 75 listener.Write( message ) 76 Next 77 End Sub 78 Sub Write( value As Object, category As String ) 79 Dim i As Long 80 For i = 0 To ELM( listeners.Count ) 81 Dim listener = listeners[i] 82 listener.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 listener = listeners[i] 89 listener.Write( message, category ) 90 Next 91 End Sub 92 93 ' 一行の文字列を出力 94 Sub WriteLine( value As Object ) 95 Dim i As Long 96 For i = 0 To ELM( listeners.Count ) 97 Dim listener = listeners[i] 98 listener.WriteLine( value ) 99 Next 100 End Sub 101 Sub WriteLine( message As String ) 102 Dim i As Long 103 For i = 0 To ELM( listeners.Count ) 104 Dim listener = listeners[i] 105 listener.WriteLine( message ) 106 Next 107 End Sub 108 Sub WriteLine( value As Object, category As String ) 109 Dim i As Long 110 For i = 0 To ELM( listeners.Count ) 111 Dim listener = listeners[i] 112 listener.WriteLine( value, category ) 113 Next 114 End Sub 115 Sub WriteLine( message As String, category As String ) 116 Dim i As Long 117 For i = 0 To ELM( listeners.Count ) 118 Dim listener = listeners[i] 119 listener.WriteLine( message, category ) 120 Next 121 End Sub 122 123 ' 条件をもとに文字列を出力 124 Sub WriteIf( condition As Boolean, value As Object ) 125 Dim i As Long 126 For i = 0 To ELM( listeners.Count ) 127 Dim listener = listeners[i] 128 listener.WriteIf( condition, value ) 129 Next 130 End Sub 131 Sub WriteIf( condition As Boolean, message As String ) 132 Dim i As Long 133 For i = 0 To ELM( listeners.Count ) 134 Dim listener = listeners[i] 135 listener.WriteIf( condition, message ) 136 Next 137 End Sub 138 Sub WriteIf( condition As Boolean, value As Object, category As String ) 139 Dim i As Long 140 For i = 0 To ELM( listeners.Count ) 141 Dim listener = listeners[i] 142 listener.WriteIf( condition, value, category ) 143 Next 144 End Sub 145 Sub WriteIf( condition As Boolean, message As String, category As String ) 146 Dim i As Long 147 For i = 0 To ELM( listeners.Count ) 148 Dim listener = listeners[i] 149 listener.WriteIf( condition, message, category ) 150 Next 151 End Sub 152 153 ' 条件をもとに一行の文字列を出力 154 Sub WriteLineIf( condition As Boolean, value As Object ) 155 Dim i As Long 156 For i = 0 To ELM( listeners.Count ) 157 Dim listener = listeners[i] 158 listener.WriteLineIf( condition, value ) 159 Next 160 End Sub 161 Sub WriteLineIf( condition As Boolean, message As String ) 162 Dim i As Long 163 For i = 0 To ELM( listeners.Count ) 164 Dim listener = listeners[i] 165 listener.WriteLineIf( condition, message ) 166 Next 167 End Sub 168 Sub WriteLineIf( condition As Boolean, value As Object, category As String ) 169 Dim i As Long 170 For i = 0 To ELM( listeners.Count ) 171 Dim listener = listeners[i] 172 listener.WriteLineIf( condition, value, category ) 173 Next 174 End Sub 175 Sub WriteLineIf( condition As Boolean, message As String, category As String ) 176 Dim i As Long 177 For i = 0 To ELM( listeners.Count ) 178 Dim listener = listeners[i] 179 listener.WriteLineIf( condition, message, category ) 180 Next 181 End Sub 182 183 184 '---------------------------------------------------------------- 185 ' パブリック プロパティ 186 '---------------------------------------------------------------- 187 188 ' IndentLevelプロパティ 189 Function IndentLevel() As Long 190 Return indentLevel 191 End Function 192 Sub IndentLevel( indentLevel As Long ) 193 This.indentLevel = indentLevel 194 195 Dim i As Long 196 For i = 0 To ELM( listeners.Count ) 197 Dim listener = listeners[i] 198 listener.IndentLevel = indentLevel 199 Next 200 End Sub 201 202 ' IndentSizeプロパティ 203 Function IndentSize() As Long 204 Return indentSize 205 End Function 206 Sub IndentSize( size As Long ) 207 indentSize = size 208 209 Dim i As Long 210 For i = 0 To ELM( listeners.Count ) 211 Dim listener = listeners[i] 212 listener.IndentSize = indentSize 213 Next 214 End Sub 215 216 ' Listenersプロパティ 217 Function Listeners() As TraceListenerCollection 218 Return listeners 219 End Function 220 221 End Class 222 1 Namespace System 2 Namespace Diagnostics 3 4 Class _System_TraceBase 5 indentLevel As Long 6 indentSize As Long 7 8 9 ' リスナ管理 10 listeners As TraceListenerCollection 11 12 Public 13 14 ' コンストラクタ 15 Sub _System_TraceBase() 16 listeners = New TraceListenerCollection 17 listeners.Add( New DefaultTraceListener() ) 18 19 indentLevel = 0 20 indentSize = 4 21 End Sub 22 23 '---------------------------------------------------------------- 24 ' パブリック メソッド 25 '---------------------------------------------------------------- 26 27 ' アサート(コールスタックを表示) 28 Sub Assert( condition As Boolean ) 29 If condition = False then 30 'TODO: コールスタックを表示 31 End If 32 End Sub 33 34 ' アサート(メッセージ文字列を表示) 35 Sub Assert( condition As Boolean, message As String ) 36 If condition = False then 37 ' TODO: メッセージボックス形式での表示に対応 38 WriteLine( message ) 39 End If 40 End Sub 41 42 ' アサート(メッセージ文字列と詳細文字列を表示) 43 Sub Assert( condition As Boolean, message As String, detailMessage As String ) 44 If condition = False then 45 ' TODO: メッセージボックス形式での表示に対応 46 WriteLine( message ) 47 End If 48 End Sub 49 50 51 ' インデントレベルを上げる 52 Sub Indent() 53 IndentLevel = indentLevel + 1 54 End Sub 55 56 ' インデントレベルを下げる 57 Sub Unindent() 58 If indentLevel <= 0 Then 59 indentLevel = 0 60 Return 61 End If 62 IndentLevel = indentLevel - 1 63 End Sub 64 65 ' 文字列を出力 66 Sub Write( value As Object ) 67 Dim i As Long 68 For i = 0 To ELM( listeners.Count ) 69 Dim listener = listeners[i] 70 listener.Write( value ) 71 Next 72 End Sub 73 Sub Write( message As String ) 74 Dim i As Long 75 For i = 0 To ELM( listeners.Count ) 76 Dim listener = listeners[i] 77 listener.Write( message ) 78 Next 79 End Sub 80 Sub Write( value As Object, category As String ) 81 Dim i As Long 82 For i = 0 To ELM( listeners.Count ) 83 Dim listener = listeners[i] 84 listener.Write( value, category ) 85 Next 86 End Sub 87 Sub Write( message As String, category As String ) 88 Dim i As Long 89 For i = 0 To ELM( listeners.Count ) 90 Dim listener = listeners[i] 91 listener.Write( message, category ) 92 Next 93 End Sub 94 95 ' 一行の文字列を出力 96 Sub WriteLine( value As Object ) 97 Dim i As Long 98 For i = 0 To ELM( listeners.Count ) 99 Dim listener = listeners[i] 100 listener.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 listener = listeners[i] 107 listener.WriteLine( message ) 108 Next 109 End Sub 110 Sub WriteLine( value As Object, category As String ) 111 Dim i As Long 112 For i = 0 To ELM( listeners.Count ) 113 Dim listener = listeners[i] 114 listener.WriteLine( value, category ) 115 Next 116 End Sub 117 Sub WriteLine( message As String, category As String ) 118 Dim i As Long 119 For i = 0 To ELM( listeners.Count ) 120 Dim listener = listeners[i] 121 listener.WriteLine( message, category ) 122 Next 123 End Sub 124 125 ' 条件をもとに文字列を出力 126 Sub WriteIf( condition As Boolean, value As Object ) 127 Dim i As Long 128 For i = 0 To ELM( listeners.Count ) 129 Dim listener = listeners[i] 130 listener.WriteIf( condition, value ) 131 Next 132 End Sub 133 Sub WriteIf( condition As Boolean, message As String ) 134 Dim i As Long 135 For i = 0 To ELM( listeners.Count ) 136 Dim listener = listeners[i] 137 listener.WriteIf( condition, message ) 138 Next 139 End Sub 140 Sub WriteIf( condition As Boolean, value As Object, category As String ) 141 Dim i As Long 142 For i = 0 To ELM( listeners.Count ) 143 Dim listener = listeners[i] 144 listener.WriteIf( condition, value, category ) 145 Next 146 End Sub 147 Sub WriteIf( condition As Boolean, message As String, category As String ) 148 Dim i As Long 149 For i = 0 To ELM( listeners.Count ) 150 Dim listener = listeners[i] 151 listener.WriteIf( condition, message, category ) 152 Next 153 End Sub 154 155 ' 条件をもとに一行の文字列を出力 156 Sub WriteLineIf( condition As Boolean, value As Object ) 157 Dim i As Long 158 For i = 0 To ELM( listeners.Count ) 159 Dim listener = listeners[i] 160 listener.WriteLineIf( condition, value ) 161 Next 162 End Sub 163 Sub WriteLineIf( condition As Boolean, message As String ) 164 Dim i As Long 165 For i = 0 To ELM( listeners.Count ) 166 Dim listener = listeners[i] 167 listener.WriteLineIf( condition, message ) 168 Next 169 End Sub 170 Sub WriteLineIf( condition As Boolean, value As Object, category As String ) 171 Dim i As Long 172 For i = 0 To ELM( listeners.Count ) 173 Dim listener = listeners[i] 174 listener.WriteLineIf( condition, value, category ) 175 Next 176 End Sub 177 Sub WriteLineIf( condition As Boolean, message As String, category As String ) 178 Dim i As Long 179 For i = 0 To ELM( listeners.Count ) 180 Dim listener = listeners[i] 181 listener.WriteLineIf( condition, message, category ) 182 Next 183 End Sub 184 185 186 '---------------------------------------------------------------- 187 ' パブリック プロパティ 188 '---------------------------------------------------------------- 189 190 ' IndentLevelプロパティ 191 Function IndentLevel() As Long 192 Return indentLevel 193 End Function 194 Sub IndentLevel( indentLevel As Long ) 195 This.indentLevel = indentLevel 196 197 Dim i As Long 198 For i = 0 To ELM( listeners.Count ) 199 Dim listener = listeners[i] 200 listener.IndentLevel = indentLevel 201 Next 202 End Sub 203 204 ' IndentSizeプロパティ 205 Function IndentSize() As Long 206 Return indentSize 207 End Function 208 Sub IndentSize( size As Long ) 209 indentSize = size 210 211 Dim i As Long 212 For i = 0 To ELM( listeners.Count ) 213 Dim listener = listeners[i] 214 listener.IndentSize = indentSize 215 Next 216 End Sub 217 218 ' Listenersプロパティ 219 Function Listeners() As TraceListenerCollection 220 Return listeners 221 End Function 222 223 End Class 224 225 End Namespace 226 End Namespace
Note:
See TracChangeset
for help on using the changeset viewer.