From e73a4c16a2269cdb2f5e7d66fb9839e4c44e14de Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Fri, 29 Oct 2021 15:37:28 +0200 Subject: Prepare third compiler implementation --- src/string_view.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 src/string_view.c (limited to 'src/string_view.c') diff --git a/src/string_view.c b/src/string_view.c new file mode 100755 index 0000000..8247bd4 --- /dev/null +++ b/src/string_view.c @@ -0,0 +1,40 @@ +#include "string_view.h" + +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) { + for (size_t i = 0; i < sv->n; i++) { + putchar(sv->start[i]); + } +} -- cgit v1.2.1