move callback_list, parse_buffer, prepend_buffer, static_vector, timer_queue into util; util links pico_stdlib for timer_queue

This commit is contained in:
Ian Gulliver
2026-05-01 10:50:15 -07:00
parent bcddb14acf
commit cc1448d6a2
6 changed files with 1 additions and 0 deletions

36
util/static_vector.h Normal file
View File

@@ -0,0 +1,36 @@
#pragma once
#include <cstddef>
#include <cstdint>
#include <cstring>
// Fixed-capacity contiguous container: std::vector's interface with std::array's
// storage. Used for response payloads sized at parse time but bounded at compile
// time, where heap allocation is unavailable or undesirable.
template <typename T, size_t Capacity>
class static_vector {
T m_data[Capacity];
size_t m_size = 0;
public:
void push_back(const T &v) {
if (m_size < Capacity) m_data[m_size++] = v;
}
void clear() { m_size = 0; }
size_t size() const { return m_size; }
size_t capacity() const { return Capacity; }
bool full() const { return m_size >= Capacity; }
bool empty() const { return m_size == 0; }
T *data() { return m_data; }
const T *data() const { return m_data; }
T &operator[](size_t i) { return m_data[i]; }
const T &operator[](size_t i) const { return m_data[i]; }
T *begin() { return m_data; }
T *end() { return m_data + m_size; }
const T *begin() const { return m_data; }
const T *end() const { return m_data + m_size; }
};