1#ifndef PRISM_INTERNAL_BUFFER_H
2#define PRISM_INTERNAL_BUFFER_H
26void pm_buffer_init(
pm_buffer_t *buffer,
size_t capacity);
32void pm_buffer_append_zeroes(
pm_buffer_t *buffer,
size_t length);
35void pm_buffer_append_repeated(
pm_buffer_t *buffer, uint8_t value,
size_t length);
41void pm_buffer_append_string(
pm_buffer_t *buffer, const
char *value,
size_t length);
48#define PM_BUFFER_APPEND_LITERAL(buffer, literal) pm_buffer_append_string((buffer), "" literal, sizeof(literal) - 1)
51void pm_buffer_append_bytes(
pm_buffer_t *buffer,
const uint8_t *value,
size_t length);
54void pm_buffer_append_byte(
pm_buffer_t *buffer, uint8_t value);
57void pm_buffer_append_varuint(
pm_buffer_t *buffer, uint32_t value);
60void pm_buffer_append_varsint(
pm_buffer_t *buffer, int32_t value);
63void pm_buffer_append_double(
pm_buffer_t *buffer,
double value);
66void pm_buffer_append_uint64(
pm_buffer_t *buffer, uint64_t value);
69bool pm_buffer_append_unicode_codepoint(
pm_buffer_t *buffer, uint32_t value);
76 PM_BUFFER_ESCAPING_RUBY,
77 PM_BUFFER_ESCAPING_JSON
78} pm_buffer_escaping_t;
81void pm_buffer_append_source(
pm_buffer_t *buffer,
const uint8_t *source,
size_t length, pm_buffer_escaping_t escaping);
84void pm_buffer_prepend_string(
pm_buffer_t *buffer,
const char *value,
size_t length);
99size_t pm_buffer_index(
const pm_buffer_t *buffer,
char value);
102void pm_buffer_insert(
pm_buffer_t *buffer,
size_t index,
const char *value,
size_t length);
A wrapper around a contiguous block of allocated memory.