1
0
mirror of https://github.com/Halofreak1990/XFXFramework synced 2024-12-26 13:49:34 +01:00
Halofreak1990 e7a47c8ed9 Revamped the List class so that it can (properly) handle pointers as well
Added 'ValueTypes' Single and Double
Added some components in the new System::Net namespace
Added the Console class, which can be used to output text to the screen
Updated a bunch of structs to include the IComparable and IEquatable interfaces, and inheritance from Object to allow better interoperability between container classes and other types
Replaced all exception handling code with a report to stdout.txt - this will, I hope, eventually be reversed, but as of yet, there is no support for exceptions.

BEWARE! Even though all libraries correctly compile, you cannot use any class/structure that inherits from a template class, because stupid G++ wants to include exception handling for each template.
2011-11-07 01:29:50 +00:00

98 lines
2.5 KiB
C++

/********************************************************
* Interfaces.h *
* *
* XFX Generic Interfaces definition file *
* Copyright © XFX Team. All Rights Reserved *
********************************************************/
#ifndef _SYSTEM_COLLECTIONS_GENERIC_INTERFACES_
#define _SYSTEM_COLLECTIONS_GENERIC_INTERFACES_
#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(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()=0;
};
// Defines a method that a type implements to compare two objects.
template <class T>
interface IComparer
{
public:
virtual int Compare(T x, T y)=0;
};
// Represents a generic collection of key/value pairs.
template <class TKey, class TValue>
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<TKey>& Keys()=0;
virtual ICollection<TValue>& Values()=0;
};
// Supports a simple iteration over a generic collection.
template <class T>
interface IEnumerator
{
public:
virtual T Current()=0;
};
// 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;
};
// Defines methods to support the comparison of objects for equality.
template <class T>
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 <class T>
interface IList : public ICollection<T>
{
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_