' リスナ Class TraceListener End Class ' リスナコレクション Class TraceListenerCollection Public '---------------------------------------------------------------- ' パブリック メソッド '---------------------------------------------------------------- ' リスナを追加 Function Add( listener As TraceListener ) ' TODO: 実装 End Function ' 複数のリスナを追加 Sub AddRange( listeners As TraceListenerCollection ) ' TODO: 実装 End Function ' リストからすべてのリスナを削除 Sub Clear() ' TODO: 実装 End Sub ' 指定したリスナのインデックスを取得 Function IndexOf( listener As TraceListener ) ' TODO: 実装 End Function ' リスナを挿入 Sub Insert( index As Long, listener As TraceListener ) ' TODO: 実装 End Sub ' リスナを削除 Function Remove( name As String ) ' TODO: 実装 End Function Function Remove( listener As TraceListener ) ' TODO: 実装 End Function '---------------------------------------------------------------- ' パブリック プロパティ '---------------------------------------------------------------- ' 保有するリスナの数を取得する Function Count() As Long ' TODO: 実装 End Function ' リスナを取得する Function Item( index As Long ) As TraceListener ' TODO: 実装 End Function End Class Class Trace Static indentLevel = 0 As Long Static indentSize = 4 As Long Static Function GetIndentString() As String Dim i As Long Dim IndentStr = "" For i = 0 To ELM( indentSize ) IndentStr = IndentStr + " " Next Dim ResultStr = "" For i = 0 To ELM( indentLevel ) ResultStr = ResultStr + IndentStr Next Return ResultStr End Function Public '---------------------------------------------------------------- ' パブリック メソッド '---------------------------------------------------------------- ' アサート(コールスタックを表示) Static Sub Assert( condition As Boolean ) If condition == False then 'TODO: コールスタックを表示 End If End Sub ' アサート(メッセージ文字列を表示) Static Sub Assert( condition As Boolean, message As String ) If condition == False then ' TODO: メッセージボックス形式での表示に対応 WriteLine( message ) End If End Sub ' アサート(メッセージ文字列と詳細文字列を表示) Static Sub Assert( condition As Boolean, message As String, detailMessage As String ) If condition == False then ' TODO: メッセージボックス形式での表示に対応 WriteLine( message ) End If End Sub ' インデントレベルを上げる Static Sub Indent() indentLevel++ End Sub ' インデントレベルを下げる Static Sub Unindent() If indentLevel <= 0 Then indentLevel = 0 Return End If indentLevel-- End Sub ' 一行の文字列を出力 Static Sub WriteLine( message As String ) Dim tempmsg = GetIndentString() + message + Ex"\n" ' TODO: リスナへの出力を実装 End Sub '---------------------------------------------------------------- ' パブリック プロパティ '---------------------------------------------------------------- ' IndentLevelプロパティ Static Function IndentLevel() As Long Return indentLevel End Function Static Sub IndentLevel( level As Long ) indentLevel = level End Sub ' IndentSizeプロパティ Static Function IndentSize() As Long Return indentSize End Function Static Sub IndentSize( size As Long ) indentSize = size End Sub ' Listenersプロパティ Static Function Listeners() As TraceListenerCollection Return listeners End Function Static Sub Listeners( listeners As TraceListenerCollection ) This.listeners = listeners End Sub End Class