diff options
author | David Robillard <d@drobilla.net> | 2020-06-28 19:46:47 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2021-03-08 23:23:06 -0500 |
commit | f7b993d5aff1274e010d45304b12109f6de7e120 (patch) | |
tree | 6fadbff8f2e696ce62ba1237bee16c07776cd03e /src/writer.c | |
parent | 2fb247d2beb71539ceba8f2841d7c1bad933ab36 (diff) | |
download | serd-f7b993d5aff1274e010d45304b12109f6de7e120.tar.gz serd-f7b993d5aff1274e010d45304b12109f6de7e120.tar.bz2 serd-f7b993d5aff1274e010d45304b12109f6de7e120.zip |
WIP: Make Writer always write to a ByteSink
Diffstat (limited to 'src/writer.c')
-rw-r--r-- | src/writer.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/writer.c b/src/writer.c index 0f54c0d3..b1404a91 100644 --- a/src/writer.c +++ b/src/writer.c @@ -14,6 +14,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#include "byte_sink.h" #include "env.h" #include "node.h" #include "sink.h" @@ -131,8 +132,7 @@ struct SerdWriterImpl { SerdURIView root_uri; WriteContext* anon_stack; size_t anon_stack_size; - SerdWriteFunc write_func; - void* stream; + SerdByteSink* byte_sink; SerdErrorFunc error_func; void* error_handle; WriteContext context; @@ -232,7 +232,7 @@ ctx(SerdWriter* writer, const SerdField field) SERD_WARN_UNUSED_RESULT static inline size_t sink(const void* buf, size_t len, SerdWriter* writer) { - const size_t written = writer->write_func(buf, 1, len, writer->stream); + const size_t written = serd_byte_sink_write(buf, len, writer->byte_sink); if (written != len) { if (errno) { serd_world_errorf(writer->world, @@ -1163,23 +1163,22 @@ serd_writer_new(SerdWorld* world, SerdSyntax syntax, SerdWriterFlags flags, SerdEnv* env, - SerdWriteFunc write_func, - void* stream) + SerdByteSink* byte_sink) { const WriteContext context = WRITE_CONTEXT_NULL; SerdWriter* writer = (SerdWriter*)calloc(1, sizeof(SerdWriter)); - writer->world = world; - writer->syntax = syntax; - writer->flags = flags; - writer->env = env; - writer->root_node = NULL; - writer->root_uri = SERD_URI_NULL; + + writer->world = world; + writer->syntax = syntax; + writer->flags = flags; + writer->env = env; + writer->root_node = NULL; + writer->root_uri = SERD_URI_NULL; writer->anon_stack = (WriteContext*)calloc(anon_stack_capacity, sizeof(WriteContext)); - writer->write_func = write_func; - writer->stream = stream; - writer->context = context; - writer->empty = true; + writer->byte_sink = byte_sink; + writer->context = context; + writer->empty = true; writer->iface.handle = writer; writer->iface.on_event = (SerdEventFunc)serd_writer_on_event; |