diff options
Diffstat (limited to 'prism/buffer.h')
| -rw-r--r-- | prism/buffer.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/prism/buffer.h b/prism/buffer.h new file mode 100644 index 0000000000..24b572d2c3 --- /dev/null +++ b/prism/buffer.h @@ -0,0 +1,52 @@ +/** + * @file buffer.h + * + * A wrapper around a contiguous block of allocated memory. + */ +#ifndef PRISM_BUFFER_H +#define PRISM_BUFFER_H + +#include "prism/compiler/exported.h" +#include "prism/compiler/nodiscard.h" +#include "prism/compiler/nonnull.h" + +#include <stddef.h> + +/** + * A wrapper around a contiguous block of allocated memory. + */ +typedef struct pm_buffer_t pm_buffer_t; + +/** + * Allocate and initialize a new buffer. If the buffer cannot be allocated, this + * function will abort the process. + * + * @returns A pointer to the initialized buffer. The caller is responsible for + * freeing the buffer with pm_buffer_free. + */ +PRISM_EXPORTED_FUNCTION PRISM_NODISCARD pm_buffer_t * pm_buffer_new(void); + +/** + * Free both the memory held by the buffer and the buffer itself. + * + * @param buffer The buffer to free. + */ +PRISM_EXPORTED_FUNCTION void pm_buffer_free(pm_buffer_t *buffer) PRISM_NONNULL(1); + +/** + * Return the value of the buffer. + * + * @param buffer The buffer to get the value of. + * @returns The value of the buffer. + */ +PRISM_EXPORTED_FUNCTION char * pm_buffer_value(const pm_buffer_t *buffer) PRISM_NONNULL(1); + +/** + * Return the length of the buffer. + * + * @param buffer The buffer to get the length of. + * @returns The length of the buffer. + */ +PRISM_EXPORTED_FUNCTION size_t pm_buffer_length(const pm_buffer_t *buffer) PRISM_NONNULL(1); + +#endif |
