cigui/include/cigui/utils/List.hpp
noffie 3679beaa4e Memory safety and Window Events
Adding memory checks and Window Event Listener

+ Memory Checks (debug)
+ Listening to window events
+ Runtime Directory Structure (Vision)
2025-04-20 17:49:15 +02:00

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>