' Classes/System/Collections/misc.ab

#ifndef __SYSTEM_COLLECTIONS_MISC_AB__
#define __SYSTEM_COLLECTIONS_MISC_AB__

Namespace System
Namespace Collections

Interface ICollection
	Inherits IEnumerable
	' Properties
	'/*Const*/ Function Count() As Long
	'/*Const*/ Function IsSynchronized() As Boolean
	' Function SyncRoot() As ...
	' Methods
	' Sub CopyTo(ByRef array As ..., index As Long)
End Interface

Interface IComparer
	' Methods
	Function Compare(ByRef x As Object, ByRef y As Object) As Long
End Interface

Interface IDictionary
	Inherits ICollection /*, IEnumerable */
	' Methods
	Sub Add(ByRef key As Object, ByRef value As Object)
	Sub Clear()
	/*Const*/ Function Contains(ByRef key As Object) As Boolean
'	/*Const*/ Function GetEnumerator() As *IDictionaryEnumerator
	/*Const*/ Function Remove(ByRef key As Object) As Boolean
	' Properties
	/*Const*/ Function IsFixedSize() As Boolean
	/*Const*/ Function IsReadOnly() As Boolean
'	/*Const*/ Function Operator [](ByRef key As Object) As *Object
'	Sub Operator []=(ByRef key As Object, ByRef value As Object)
	/*Const*/ Function Keys() As *ICollection
	/*Const*/ Function Values() As ICollection
End Interface

Interface IDictionaryEnumerator
	Inherits IEnumerator
	' Properties
	/*Const*/ Function Entry() As DictionaryEntry
	/*Const*/ Function Key() As *Object
	/*Const*/ Function Value() As *Object
End Interface

Interface IEnumerable
	' Method
'	Function GetEnumerator() As *IEnumerator
End Interface

Interface IEnumerator
	' Methods
	Function MoveNext() As Boolean
	Sub Reset()
	' Property
	Function Current() As *Object
End Interface

Interface IEqualityComparer
	' Methods
	Function Equals(ByRef x As Object, ByRef y As Object) As Boolean
	Function GetHashCode(ByRef obj As Object) As Long
End Interface

Interface IList
	Inherits ICollection /*, IEnumerable */
	' Methods
	'Function Add(value As *Object) As Long
	'Sub Clear()
	'/*Const*/ Function Contains(value As *Object) As Boolean
	/*Const*/ Function IndexOf(value As Object) As Long
	Sub Insert(index As Long, value As Object)
	Sub Remove(value As Object)
	Sub RemoveAt(index As Long)
	' Properties
	/*Const*/ Function IsFixedSize() As Boolean
	/*Const*/ Function IsReadOnly() As Boolean
	'/*Const*/ Function Operator [](index As Long) As *Object
	'/*Const*/ Sub Operator []=(index As Long, obj As *Object)
End Interface

Class DictionaryEntry
Public
	' /*Const*/ructors
	Sub DictionaryEntry()
		k = 0
		v = 0
	End Sub

	Sub DictionaryEntry(ByRef key As Object, ByRef value As Object)
		k = VarPtr(key)
		v = VarPtr(value)
	End Sub

	' Properties
	/*Const*/ Function Key() As *Object
		Return k
	End Function

	Sub Key(ByRef key As Object)
		k = VarPtr(key)
	End Sub

	/*Const*/ Function Value() As *Object
		Return v
	End Function

	Sub Value(ByRef value As Object)
		v = VarPtr(value)
	End Sub
Private
	k As *Object
	v As *Object
End Class

End Namespace 'Collections
End Namespace 'System

#endif '__SYSTEM_COLLECTIONS_MISC_AB__
