diff options
author | David Robillard <d@drobilla.net> | 2021-01-13 12:08:30 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2021-03-08 23:23:05 -0500 |
commit | 7c6c3159d1804f4855d9a4e0cd52486f61fcbab6 (patch) | |
tree | 1a678106cccba9bbbfb44deeadfa5bca3606e72c /src/byte_source.c | |
parent | a90341129953e9b8e0e1d96fa52b10cbf34d1ea1 (diff) | |
download | serd-7c6c3159d1804f4855d9a4e0cd52486f61fcbab6.tar.gz serd-7c6c3159d1804f4855d9a4e0cd52486f61fcbab6.tar.bz2 serd-7c6c3159d1804f4855d9a4e0cd52486f61fcbab6.zip |
Add SerdCursor
Diffstat (limited to 'src/byte_source.c')
-rw-r--r-- | src/byte_source.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/byte_source.c b/src/byte_source.c index 2f09d634..6ba5a718 100644 --- a/src/byte_source.c +++ b/src/byte_source.c @@ -52,11 +52,9 @@ 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) { - const Cursor cur = {name, 1, 1}; - memset(source, '\0', sizeof(*source)); source->read_func = read_func; source->error_func = error_func; @@ -64,9 +62,12 @@ serd_byte_source_open_source(SerdByteSource* source, source->stream = stream; source->page_size = page_size; source->buf_size = page_size; - source->cur = cur; + source->name = serd_node_copy(name); source->from_stream = true; + const SerdCursor cur = {source->name, 1, 1}; + source->cur = cur; + if (page_size > 1) { source->file_buf = (uint8_t*)serd_allocate_buffer(page_size); source->read_buf = source->file_buf; @@ -92,13 +93,20 @@ serd_byte_source_prepare(SerdByteSource* source) } SerdStatus -serd_byte_source_open_string(SerdByteSource* source, const char* utf8) +serd_byte_source_open_string(SerdByteSource* source, + const char* utf8, + const SerdNode* name) { - const Cursor cur = {"(string)", 1, 1}; - memset(source, '\0', sizeof(*source)); - source->cur = cur; + + source->name = + name ? serd_node_copy(name) : serd_new_string(SERD_STATIC_STRING("string")); + source->read_buf = (const uint8_t*)utf8; + + const SerdCursor cur = {source->name, 1, 1}; + source->cur = cur; + return SERD_SUCCESS; } @@ -114,6 +122,7 @@ serd_byte_source_close(SerdByteSource* source) serd_free_aligned(source->file_buf); } + serd_node_free(source->name); memset(source, '\0', sizeof(*source)); return st; } |