#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; } void sv_rewind(StringView *sv) { if (sv->start == 0) { return; } sv->start--; sv->n++; } 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]); } }