aboutsummaryrefslogtreecommitdiffstats
path: root/src/byte_source.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-06-03 22:15:53 +0200
committerDavid Robillard <d@drobilla.net>2019-12-19 20:55:22 -0500
commitcd30f11644697d7b1a38c171007c57379bec79df (patch)
treecd97597156f8b7ff34d837863aac9040ef822ebb /src/byte_source.c
parent633d058cf776e28bb0ce0505e58b0be348674be4 (diff)
downloadserd-cd30f11644697d7b1a38c171007c57379bec79df.tar.gz
serd-cd30f11644697d7b1a38c171007c57379bec79df.tar.bz2
serd-cd30f11644697d7b1a38c171007c57379bec79df.zip
Add SerdCursor to public API
Diffstat (limited to 'src/byte_source.c')
-rw-r--r--src/byte_source.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/byte_source.c b/src/byte_source.c
index b9e9ff4b..34c75736 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;
}