#pragma once #include "buffer.hpp" #include "stdlib.h" #include "string.h" class arena{ ksdk::buffer data; size_t last; size_t count; public: arena() :last(0) ,count(0) ,data(ksdk::buffer(nullptr,(size_t)0)) {} arena(size_t sz) :last(0) ,count(0) ,data(ksdk::buffer(nullptr,(size_t)0)) { if(sz!=0) { auto v=malloc(sz); if(v!=nullptr) { data=ksdk::buffer((char*)v,sz); } } } arena(char* pos,size_t sz) :last(0) ,count(0) ,data(ksdk::buffer(pos,(size_t)sz)) { } void* allocate(size_t sz) { auto ret=data.begin()+last; if(ret=data.begin() && ptr