Namespace System
	Namespace Diagnostics

		Class Trace
			Static base As _System_TraceBase()

		Public

			'----------------------------------------------------------------
			' パブリック メソッド
			'----------------------------------------------------------------

			' アサート（コールスタックを表示）
			Static Sub Assert( condition As Boolean )
				base.Assert( condition )
			End Sub

			' アサート（メッセージ文字列を表示）
			Static Sub Assert( condition As Boolean, message As String )
				base.Assert( condition, message )
			End Sub

			' アサート（メッセージ文字列と詳細文字列を表示）
			Static Sub Assert( condition As Boolean, message As String, detailMessage As String )
				base.Assert( condition, message, detailMessage )
			End Sub


			' インデントレベルを上げる
			Static Sub Indent()
				base.Indent()
			End Sub

			' インデントレベルを下げる
			Static Sub Unindent()
				base.Unindent()
			End Sub

			' 文字列を出力
			Static Sub Write( value As Object )
				base.Write( value )
			End Sub
			Static Sub Write( message As String )
				base.Write( message )
			End Sub
			Static Sub Write( value As Object, category As String )
				base.Write( value, category )
			End Sub
			Static Sub Write( message As String, category As String )
				base.Write( message, category )
			End Sub

			' 一行の文字列を出力
			Static Sub WriteLine( value As Object )
				base.WriteLine( value )
			End Sub
			Static Sub WriteLine( message As String )
				base.WriteLine( message )
			End Sub
			Static Sub WriteLine( value As Object, category As String )
				base.WriteLine( value, category )
			End Sub
			Static Sub WriteLine( message As String, category As String )
				base.WriteLine( message, category )
			End Sub

			' 条件をもとに文字列を出力
			Static Sub WriteIf( condition As Boolean, value As Object )
				base.WriteIf( condition, value )
			End Sub
			Static Sub WriteIf( condition As Boolean, message As String )
				base.WriteIf( condition, message )
			End Sub
			Static Sub WriteIf( condition As Boolean, value As Object, category As String )
				base.WriteIf( condition, value, category )
			End Sub
			Static Sub WriteIf( condition As Boolean, message As String, category As String )
				base.WriteIf( condition, message, category )
			End Sub

			' 条件をもとに一行の文字列を出力
			Static Sub WriteLineIf( condition As Boolean, message As String )
				base.WriteLineIf( condition, message )
			End Sub
			Static Sub WriteLineIf( condition As Boolean, value As Object )
				base.WriteLineIf( condition, value )
			End Sub
			Static Sub WriteLineIf( condition As Boolean, value As Object, category As String )
				base.WriteLineIf( condition, value, category )
			End Sub
			Static Sub WriteLineIf( condition As Boolean, message As String, category As String )
				base.WriteLineIf( condition, message, category )
			End Sub


			'----------------------------------------------------------------
			' パブリック プロパティ
			'----------------------------------------------------------------

			' IndentLevelプロパティ
			Static Function IndentLevel() As Long
				Return base.IndentLevel
			End Function
			Static Sub IndentLevel( indentLevel As Long )
				base.IndentLevel = indentLevel
			End Sub

			' IndentSizeプロパティ
			Static Function IndentSize() As Long
				Return base.IndentSize
			End Function
			Static Sub IndentSize( size As Long )
				base.IndentSize = size
			End Sub

			' Listenersプロパティ
			Static Function Listeners() As TraceListenerCollection
				Return base.Listeners
			End Function

		End Class

	End Namespace
End Namespace
