blob: c12e4902528fa7899b1a2a484311db7609579d63 [file] [log] [blame]
#pragma once
#include <stdbool.h>
#include <stdlib.h>
#include <shared/macro.h>
/*
* Buffer abstract data type
*/
struct scratchbuf {
char *bytes;
size_t size;
bool need_free;
};
void scratchbuf_init(struct scratchbuf *buf, char *stackbuf, size_t size);
int scratchbuf_alloc(struct scratchbuf *buf, size_t sz);
void scratchbuf_release(struct scratchbuf *buf);
/* Return a C string */
inline char *scratchbuf_str(struct scratchbuf *buf)
{
return buf->bytes;
}
#define SCRATCHBUF_INITIALIZER(buf_) { \
.bytes = buf_, \
.size = sizeof(buf_) + _array_size_chk(buf_), \
.need_free = false, \
}