From 916aa42260290e9e864304bc7d9395b6aa693c27 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Tue, 10 Dec 2024 12:24:07 +0100 Subject: kernel: Add string view and string builder This makes write/read calls that use strings to communicate much simpler and less error prone. --- kernel/lib/sb.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 kernel/lib/sb.h (limited to 'kernel/lib/sb.h') diff --git a/kernel/lib/sb.h b/kernel/lib/sb.h new file mode 100644 index 0000000..8493997 --- /dev/null +++ b/kernel/lib/sb.h @@ -0,0 +1,30 @@ +#ifndef SB_H +#define SB_H +#include "sv.h" +#include +#include + +struct sb { + char *string; + size_t length; + size_t capacity; + uint8_t prebuffer; +}; + +struct sv; + +void sb_init(struct sb *ctx); +int sb_init_capacity(struct sb *ctx, size_t starting_capacity); +void sb_init_buffer(struct sb *ctx, char *buffer, size_t size); +void sb_free(struct sb *ctx); +void sb_reset(struct sb *ctx); +int sb_isempty(const struct sb *ctx); +int sb_append_char(struct sb *ctx, char c); +int sb_delete_right(struct sb *ctx, size_t n); +int sb_append(struct sb *ctx, const char *s); +int sb_append_buffer(struct sb *ctx, const char *buffer, + size_t length); +int sb_append_sv(struct sb *ctx, struct sv sv); +int sb_prepend_sv(struct sb *ctx, struct sv sv); +int sb_prepend_buffer(struct sb *ctx, const char *buffer, size_t length); +#endif -- cgit v1.2.3