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