1
0
mirror of https://github.com/Halofreak1990/XFXFramework synced 2024-12-26 13:49:34 +01:00
XFXFramework/include/System/Windows/PresentationFrameworkCollection.h

130 lines
3.1 KiB
C
Raw Normal View History

/*****************************************************************************
* 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_