From 6a833ddc268191bfaea94a1cd896684f1b834ef7 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Mon, 11 Oct 2021 11:20:38 +0200 Subject: Modify main function to allow multiple file processing --- src/bootstrap/string_view.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/bootstrap/string_view.c (limited to 'src/bootstrap/string_view.c') diff --git a/src/bootstrap/string_view.c b/src/bootstrap/string_view.c new file mode 100644 index 0000000..13ba9e0 --- /dev/null +++ b/src/bootstrap/string_view.c @@ -0,0 +1,43 @@ +typedef struct StringView { + char *start; + size_t n; +} StringView; + +char +sv_next(StringView *sv) { + if (sv->n == 0) { + return '\0'; + } + char c = sv->start[0]; + sv->start++; + sv->n--; + return c; +} + +char +sv_peek(const StringView *sv) { + if (sv->n == 0) { + return '\0'; + } + return sv->start[0]; +} + +bool +sv_equal(const StringView *a, const StringView *b) { + if (a->n != b->n) { + return false; + } + for (size_t i = 0; i < a->n; i++) { + if (a->start[i] != b->start[i]) { + return false; + } + } + return true; +} + +void +sv_write(const StringView *sv, FILE *file) { + for (size_t i = 0; i < sv->n; i++) { + putc(sv->start[i], file); + } +} -- cgit v1.2.1