Created Generic re-sizable array class
This commit is contained in:
56
include/GenericArray.hpp
Normal file
56
include/GenericArray.hpp
Normal 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
|
||||||
Reference in New Issue
Block a user