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