diff options
author | David Robillard <d@drobilla.net> | 2018-06-03 22:15:53 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-06-21 18:12:04 +0200 |
commit | 8c4a8baf4f9081bdb9523c08005a529a71fd6722 (patch) | |
tree | 6b51d5d5741243e9489e06138f2aeb53b924d769 /src/byte_source.c | |
parent | 6fcf2dce8d519b4fee2b7b891e3710061cca981c (diff) | |
download | serd-8c4a8baf4f9081bdb9523c08005a529a71fd6722.tar.gz serd-8c4a8baf4f9081bdb9523c08005a529a71fd6722.tar.bz2 serd-8c4a8baf4f9081bdb9523c08005a529a71fd6722.zip |
Add SerdCursor to public API
Diffstat (limited to 'src/byte_source.c')
-rw-r--r-- | src/byte_source.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/byte_source.c b/src/byte_source.c index b0199e63..ed4e5e83 100644 --- a/src/byte_source.c +++ b/src/byte_source.c @@ -48,11 +48,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; @@ -60,9 +58,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; @@ -89,13 +90,18 @@ 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("string"); source->read_buf = (const uint8_t*)utf8; + + const SerdCursor cur = {source->name, 1, 1}; + source->cur = cur; + return SERD_SUCCESS; } @@ -110,6 +116,7 @@ serd_byte_source_close(SerdByteSource* source) if (source->page_size > 1) { free(source->file_buf); } + serd_node_free(source->name); memset(source, '\0', sizeof(*source)); return st; } |