aboutsummaryrefslogtreecommitdiffstats
path: root/src/byte_source.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-01-13 12:08:30 +0100
committerDavid Robillard <d@drobilla.net>2021-03-08 23:23:05 -0500
commit7c6c3159d1804f4855d9a4e0cd52486f61fcbab6 (patch)
tree1a678106cccba9bbbfb44deeadfa5bca3606e72c /src/byte_source.c
parenta90341129953e9b8e0e1d96fa52b10cbf34d1ea1 (diff)
downloadserd-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.c25
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;
}