Created Generic re-sizable array class

This commit is contained in:
Alex Alvarado
2022-04-11 20:50:29 +02:00
parent 2da059d4e5
commit c26471894a

56
include/GenericArray.hpp Normal file
View File

@ -0,0 +1,56 @@
#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