aboutsummaryrefslogtreecommitdiffstats
path: root/src/node_syntax.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-08-13 20:31:57 -0400
committerDavid Robillard <d@drobilla.net>2022-01-28 21:57:07 -0500
commit0e739f34801ff6810064a8fac570f6be2b61ae70 (patch)
tree4451739f8e9b00d490d2d59aa6b1f370ae99c356 /src/node_syntax.c
parent63e7e57237a79d0447b0450a7fd3148c43052299 (diff)
downloadserd-0e739f34801ff6810064a8fac570f6be2b61ae70.tar.gz
serd-0e739f34801ff6810064a8fac570f6be2b61ae70.tar.bz2
serd-0e739f34801ff6810064a8fac570f6be2b61ae70.zip
Simplify output stream API
This makes the paging mechanism an internal detail once again. While it's conceptually elegant to simply have a single write interface and have the block dumper just be another implementation of that, unfortunately it is not practical. The inlining of serd_block_dumper_write() is a significant performance boost, because it avoids a non-inlinable function call of overhead per character. Compared to the SerdByteSink approach, this removes the burden and overhead of needing to dynamically allocate the structure itself.
Diffstat (limited to 'src/node_syntax.c')
-rw-r--r--src/node_syntax.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/node_syntax.c b/src/node_syntax.c
index 1dadc7b8..d2768c3e 100644
--- a/src/node_syntax.c
+++ b/src/node_syntax.c
@@ -98,22 +98,22 @@ serd_node_to_syntax_in(const SerdNode* const node,
const SerdSyntax syntax,
const SerdEnv* const env)
{
- SerdWorld* const world = serd_world_new();
- SerdBuffer buffer = {NULL, 0};
- SerdByteSink* const out = serd_byte_sink_new_buffer(&buffer);
- SerdWriter* const writer = serd_writer_new(world, syntax, 0, env, out);
+ SerdWorld* const world = serd_world_new();
+ SerdBuffer buffer = {NULL, 0};
+ SerdOutputStream out = serd_open_output_buffer(&buffer);
+ SerdWriter* const writer = serd_writer_new(world, syntax, 0, env, &out, 1);
char* result = NULL;
if (!serd_writer_write_node(writer, node) && !serd_writer_finish(writer) &&
- !serd_byte_sink_close(out)) {
+ !serd_close_output(&out)) {
result = (char*)buffer.buf;
} else {
- serd_byte_sink_close(out);
+ serd_close_output(&out);
free(buffer.buf);
}
serd_writer_free(writer);
- serd_byte_sink_free(out);
+ serd_close_output(&out);
serd_world_free(world);
return result;