diff --git a/include/GenericArray.hpp b/include/GenericArray.hpp new file mode 100644 index 0000000..3b7dc22 --- /dev/null +++ b/include/GenericArray.hpp @@ -0,0 +1,56 @@ +#ifndef GenericArrayH +#define GenericArrayH + +template +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 \ No newline at end of file