Namespace System
	Namespace Diagnostics

		' リスナコレクション
		Class TraceListenerCollection
			pListeners As *TraceListener
			count As Long
		Public

			Sub TraceListenerCollection()
				pListeners = _System_malloc( 1 )
			End Sub
			Sub ~TraceListenerCollection()
				_System_free( pListeners )
			End Sub

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

			' リスナを追加
			Sub Add( listener As TraceListener )
				pListeners = _System_realloc( pListeners, ( count + 1 ) * SizeOf( LONG_PTR ) )
				pListeners[count] = listener
				count++
			End Sub

			' 複数のリスナを追加
			Sub AddRange( listeners As TraceListenerCollection )
				' TODO: 実装
			End Sub

			' リストからすべてのリスナを削除
			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


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

			' インデクサ ( Getter )
			Function Operator[] ( index As Long ) As TraceListener
				If index < 0 or count <= index Then
					' TODO: エラー処理
					debug
				End If

				Return pListeners[index]
			End Function

			' 保有するリスナの数を取得する
			Function Count() As Long
				Return count
			End Function
		End Class

	End Namespace
End Namespace
