diff options
author | David Robillard <d@drobilla.net> | 2021-07-09 20:23:41 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2022-01-13 23:03:53 -0500 |
commit | bf72cc408db5244881143619236aee20156f4ffd (patch) | |
tree | d8f12781c8050e2ee9c0e9d83488838968480f00 /src/byte_source.h | |
parent | a1c18e5585a1b3edbe62f53e768d270e54e4cac5 (diff) | |
download | serd-bf72cc408db5244881143619236aee20156f4ffd.tar.gz serd-bf72cc408db5244881143619236aee20156f4ffd.tar.bz2 serd-bf72cc408db5244881143619236aee20156f4ffd.zip |
Add SerdCaret
Diffstat (limited to 'src/byte_source.h')
-rw-r--r-- | src/byte_source.h | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/byte_source.h b/src/byte_source.h index 69f92295..6469ba95 100644 --- a/src/byte_source.h +++ b/src/byte_source.h @@ -17,6 +17,8 @@ #ifndef SERD_BYTE_SOURCE_H #define SERD_BYTE_SOURCE_H +#include "caret.h" + #include "serd/serd.h" #include <assert.h> @@ -27,19 +29,14 @@ typedef int (*SerdStreamCloseFunc)(void*); typedef struct { - const char* filename; - unsigned line; - unsigned col; -} Cursor; - -typedef struct { SerdReadFunc read_func; ///< Read function (e.g. fread) SerdStreamErrorFunc error_func; ///< Error function (e.g. ferror) SerdStreamCloseFunc close_func; ///< Function for closing stream void* stream; ///< Stream (e.g. FILE) size_t page_size; ///< Number of bytes to read at a time size_t buf_size; ///< Number of bytes in file_buf - Cursor cur; ///< Cursor for error reporting + SerdNode* name; ///< Name of stream (referenced by cur) + SerdCaret caret; ///< Caret for error reporting uint8_t* file_buf; ///< Buffer iff reading pages from a file const uint8_t* read_buf; ///< Pointer to file_buf or read_byte size_t read_head; ///< Offset into read_buf @@ -50,7 +47,9 @@ typedef struct { } SerdByteSource; SerdStatus -serd_byte_source_open_string(SerdByteSource* source, const char* utf8); +serd_byte_source_open_string(SerdByteSource* source, + const char* utf8, + const SerdNode* name); SerdStatus serd_byte_source_open_source(SerdByteSource* source, @@ -58,7 +57,7 @@ serd_byte_source_open_source(SerdByteSource* source, SerdStreamErrorFunc error_func, SerdStreamCloseFunc close_func, void* stream, - const char* name, + const SerdNode* name, size_t page_size); SerdStatus @@ -85,11 +84,11 @@ serd_byte_source_advance(SerdByteSource* source) switch (serd_byte_source_peek(source)) { case '\n': - ++source->cur.line; - source->cur.col = 0; + ++source->caret.line; + source->caret.col = 0; break; default: - ++source->cur.col; + ++source->caret.col; } const bool was_eof = source->eof; |