aboutsummaryrefslogtreecommitdiffstats
path: root/src/node_syntax.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-08-14 01:51:55 -0400
committerDavid Robillard <d@drobilla.net>2022-01-28 21:57:07 -0500
commitb3892cb6e4963e1bbeb346a8124101b7c3cf379b (patch)
tree4800918b6f4db5ce0d0f4802988c1935996d6ba3 /src/node_syntax.c
parent0e739f34801ff6810064a8fac570f6be2b61ae70 (diff)
downloadserd-b3892cb6e4963e1bbeb346a8124101b7c3cf379b.tar.gz
serd-b3892cb6e4963e1bbeb346a8124101b7c3cf379b.tar.bz2
serd-b3892cb6e4963e1bbeb346a8124101b7c3cf379b.zip
Simplify input stream API
More or less the same rationale as the previous commit, but for reading. This makes for nice symmetry with writing, at the cost of a slightly more annoying reader interface since the source doesn't know its block size or name.
Diffstat (limited to 'src/node_syntax.c')
-rw-r--r--src/node_syntax.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/node_syntax.c b/src/node_syntax.c
index d2768c3e..5c579b84 100644
--- a/src/node_syntax.c
+++ b/src/node_syntax.c
@@ -54,8 +54,7 @@ serd_node_from_syntax_in(const char* const str,
SerdWorld* const world = serd_world_new();
SerdSink* const sink = serd_sink_new(&object, on_node_string_event, NULL);
- SerdByteSource* const source = serd_byte_source_new_string(doc, NULL);
- SerdReader* const reader =
+ SerdReader* const reader =
serd_reader_new(world,
syntax,
SERD_READ_RELATIVE | SERD_READ_GLOBAL | SERD_READ_GENERATED,
@@ -63,11 +62,16 @@ serd_node_from_syntax_in(const char* const str,
sink,
1024 + doc_len);
- serd_reader_start(reader, source);
+ const SerdNode* string_name =
+ serd_nodes_string(serd_world_nodes(world), SERD_STRING("string"));
+
+ const char* position = doc;
+ SerdInputStream in = serd_open_input_string(&position);
+ serd_reader_start(reader, &in, string_name, 1);
serd_reader_read_document(reader);
serd_reader_finish(reader);
+ serd_close_input(&in);
serd_reader_free(reader);
- serd_byte_source_free(source);
serd_sink_free(sink);
serd_world_free(world);
free(doc);