/***************************************************************************** * 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 #include namespace System { namespace Collections { namespace Generic { /** * Defines methods to manipulate generic collections. */ template 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 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 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* getKeys()const =0; virtual ICollection* getValues()const =0; virtual ~IDictionary() { } }; /** * Supports a simple iteration over a generic collection. */ template 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 interface IEnumerable { public: virtual IEnumerator* GetEnumerator()=0; virtual ~IEnumerable() { } }; /** * Defines methods to support the comparison of objects for equality. */ template 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 interface IList : public ICollection { 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_