/******************************************************** * Interfaces.h * * * * XFX Generic Interfaces definition file * * Copyright © XFX Team. All Rights Reserved * ********************************************************/ #ifndef _SYSTEM_COLLECTIONS_GENERIC_INTERFACES_ #define _SYSTEM_COLLECTIONS_GENERIC_INTERFACES_ #include namespace System { namespace Collections { namespace Generic { /// /// Defines methods to manipulate generic collections. /// template interface ICollection { public: virtual void Add(T item)=0; virtual void Clear()=0; virtual bool Contains(T item)=0; virtual void CopyTo(T array[], int arrayIndex)=0; virtual bool Remove(T item)=0; virtual int Count()=0; virtual bool IsReadOnly() { return true; } }; /// /// Defines a method that a type implements to compare two objects. /// template interface IComparer { public: virtual int Compare(T x, T y)=0; }; /// /// Represents a generic collection of key/value pairs. /// template interface IDictionary { public: virtual void Add(TKey key, TValue value)=0; virtual bool ContainsKey(TKey key)=0; virtual bool Remove(TKey key)=0; virtual bool TryGetValue(TKey key, out TValue value)=0; virtual ICollection Keys()=0; virtual ICollection Values()=0; }; /// /// Supports a simple iteration over a generic collection. /// template interface IEnumerator { public: virtual T Current()=0; }; /// /// Exposes the enumerator, which supports a simple iteration over a collection of a specified type. /// template interface IEnumerable { public: virtual IEnumerator GetEnumerator()=0; }; /// /// Defines methods to support the comparison of objects for equality. /// template interface IEqualityComparer { public: virtual bool Equals(T x, T y)=0; virtual int GetHashCode(T obj)=0; }; /// /// Represents a collection of objects that can be individually accessed by index. /// template interface IList : public ICollection { public: virtual int IndexOf(T item)=0; virtual void Insert(int index, T item)=0; virtual void RemoveAt(int index)=0; virtual T operator[](int index)=0; virtual ~IList() {} }; } } } #endif //_SYSTEM_COLLECTIONS_GENERIC_INTERFACES_