/***************************************************************************** * PresentationFrameworkCollection.h * * * * System::Windows::PresentationFrameworkCollection definition file * * Copyright (c) XFX Team. All rights reserved * *****************************************************************************/ #ifndef _SYSTEM_WINDOWS_PRESENTATIONFRAMEWORKCOLLECTION_ #define _SYSTEM_WINDOWS_PRESENTATIONFRAMEWORKCOLLECTION_ #include <System/Collections/Generic/List.h> #include <sassert.h> using namespace System::Collections::Generic; namespace System { namespace Windows { template <typename T> class PresentationFrameworkCollection : public IList<T>, public Object { private: List<T> _items; protected: PresentationFrameworkCollection(); public: int Count() const; bool IsReadOnly() const; void Add(const T& item); void Clear(); bool Contains(const T& item) const; void CopyTo(T array[], const int index) const; static const Type& GetType(); int IndexOf(const T& item) const; void Insert(const int index, const T& item); bool Remove(const T& item); void RemoveAt(const int index); T& operator[](const int index); }; /////////////////////////////////////////////////////////////////////// template <typename T> int PresentationFrameworkCollection<T>::Count() const { return _items.Count(); } template <typename T> bool PresentationFrameworkCollection<T>::IsReadOnly() const { return _items.IsReadOnly(); } template <typename T> void PresentationFrameworkCollection<T>::Add(const T& item) { _items.Add(item); } template <typename T> void PresentationFrameworkCollection<T>::Clear() { _items.Clear(); } template <typename T> bool PresentationFrameworkCollection<T>::Contains(const T& item) const { return (IndexOf(item) != -1); } template <typename T> void PresentationFrameworkCollection<T>::CopyTo(T array[], const int index) const { _items.CopyTo(array, index); } template <typename T> const Type PresentationFrameworkCollection<T>::GetType() { static const Type PresentationFrameworkCollectionTypeInfo("PresentationFrameworkCollection", "System::Windows::PresentationFrameworkCollection", TypeCode::Object, true); return PresentationFrameworkCollectionTypeInfo; } template <typename T> int PresentationFrameworkCollection<T>::IndexOf(const T& item) const { return _items.IndexOf(item); } template <typename T> void PresentationFrameworkCollection<T>::Insert(const int index, const T& item) { _items.Insert(index, item); } template <typename T> bool PresentationFrameworkCollection<T>::Remove(const T& item) { int itemIndex = IndexOf(item); if (itemIndex == -1) return false; RemoveAt(itemIndex); return true; } template <typename T> void PresentationFrameworkCollection<T>::RemoveAt(const int index) { _items.RemoveAt(index); } template <typename T> T& PresentationFrameworkCollection<T>::operator[](const int index) { return _items[index]; } } } #endif //_SYSTEM_WINDOWS_PRESENTATIONFRAMEWORKCOLLECTION_