56 lines
917 B
C++
56 lines
917 B
C++
#ifndef GenericArrayH
|
|
#define GenericArrayH
|
|
|
|
template <typename T>
|
|
class GenericArray
|
|
{
|
|
private:
|
|
protected:
|
|
size_t items;
|
|
T **data;
|
|
void Initialize(size_t initialSize)
|
|
{
|
|
this->data = (T **)malloc(items * sizeof(T *));
|
|
this->items = 0;
|
|
}
|
|
|
|
public:
|
|
GenericArray()
|
|
{
|
|
this->Initialize(0);
|
|
}
|
|
|
|
GenericArray(size_t initialSize)
|
|
{
|
|
this->Initialize(initialSize);
|
|
}
|
|
|
|
~GenericArray()
|
|
{
|
|
Clear(this);
|
|
}
|
|
|
|
int Count()
|
|
{
|
|
return items;
|
|
}
|
|
|
|
void Append(T element)
|
|
{
|
|
items += 1;
|
|
data = (T**)realloc((void *)data, items * sizeof(T*));
|
|
data[items-1] = new T(element);
|
|
}
|
|
|
|
void Clear(GenericArray *a)
|
|
{
|
|
for (int i = 0; i < items; i++)
|
|
{
|
|
free((a->data[i]));
|
|
}
|
|
free(a->data);
|
|
a->data = nullptr;
|
|
a->items = 0;
|
|
}
|
|
};
|
|
#endif |