Adding memory checks and Window Event Listener + Memory Checks (debug) + Listening to window events + Runtime Directory Structure (Vision)
52 lines
No EOL
889 B
C++
52 lines
No EOL
889 B
C++
#pragma once
|
|
|
|
#include <functional>
|
|
#include <memory>
|
|
|
|
namespace cig
|
|
{
|
|
template <typename T, size_t growth_scalar = 1, size_t growth_summand = 3>
|
|
class List
|
|
{
|
|
T* m_Data = nullptr;
|
|
size_t m_Size = 0;
|
|
size_t m_Capacity;
|
|
|
|
protected:
|
|
void reserve(size_t capacity);
|
|
|
|
public:
|
|
explicit List(size_t capacity = 3);
|
|
~List();
|
|
|
|
void own(T* data, size_t size);
|
|
|
|
void copy(const T* data, size_t size);
|
|
|
|
[[nodiscard]] size_t size() const;
|
|
|
|
T& operator[](size_t index);
|
|
|
|
const T& operator[](size_t index) const;
|
|
|
|
void need(size_t additional_size);
|
|
|
|
[[nodiscard]] bool empty() const;
|
|
|
|
void clear();
|
|
|
|
void push_back(const T& value);
|
|
|
|
template <typename... Args>
|
|
void emplace_back(Args&&... args);
|
|
|
|
void expand(const List<T>& other);
|
|
|
|
template <typename Lambda>
|
|
void iterate(Lambda&& lambda) const;
|
|
|
|
const T* data() const;
|
|
|
|
};
|
|
}
|
|
#include <cigui/utils/List.inl> |