#pragma once
#include "globals.h"
constexpr usize DEFAULT_ALIGNMENT = sizeof(void *);
constexpr usize align_up_pow_2(usize x, usize b) {
return (x + b - 1) & ~(b - 1);
}
constexpr usize align_down_pow_2(usize x, usize b) {
return x & ~(b - 1);
}
struct ArenaC {
u8 *base;
usize capacity;
usize position;
void *push(u64 push_size, u64 push_alignment = DEFAULT_ALIGNMENT, bool zero_init = true);
void pop(u64 size);
void reset();
u64 used() const;
u64 remaining() const;
ArenaC(usize requested_capacity);
~ArenaC();
ArenaC(const ArenaC &) = delete;
ArenaC &operator=(const ArenaC &) = delete;
};