diff options
author | David Robillard <d@drobilla.net> | 2018-05-10 19:29:22 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-11-25 15:58:15 +0100 |
commit | f2a19949d0da60465e2d68b5e66a52e0d970ebd1 (patch) | |
tree | 0e72fcb7205e52f82e3821b2da9e5335716a5115 /src/writer.c | |
parent | 6cf2ecfab4b3cb150b154bdc1130aca022a8f89c (diff) | |
download | serd-f2a19949d0da60465e2d68b5e66a52e0d970ebd1.tar.gz serd-f2a19949d0da60465e2d68b5e66a52e0d970ebd1.tar.bz2 serd-f2a19949d0da60465e2d68b5e66a52e0d970ebd1.zip |
Add SerdSink interface and hide individual function implementations
Diffstat (limited to 'src/writer.c')
-rw-r--r-- | src/writer.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/writer.c b/src/writer.c index 11aa5b53..e817c023 100644 --- a/src/writer.c +++ b/src/writer.c @@ -89,6 +89,7 @@ static const SepRule rules[] = { }; struct SerdWriterImpl { + SerdSink iface; SerdSyntax syntax; SerdStyle style; SerdEnv* env; @@ -114,6 +115,11 @@ typedef enum { WRITE_LONG_STRING } TextContext; +static SerdStatus +serd_writer_set_prefix(SerdWriter* writer, + const SerdNode* name, + const SerdNode* uri); + static bool write_node(SerdWriter* writer, const SerdNode* node, @@ -692,7 +698,7 @@ write_list_obj(SerdWriter* writer, return false; } -SerdStatus +static SerdStatus serd_writer_write_statement(SerdWriter* writer, SerdStatementFlags flags, const SerdNode* graph, @@ -825,7 +831,7 @@ serd_writer_write_statement(SerdWriter* writer, return SERD_SUCCESS; } -SerdStatus +static SerdStatus serd_writer_end_anon(SerdWriter* writer, const SerdNode* node) { @@ -888,6 +894,13 @@ serd_writer_new(SerdSyntax syntax, writer->empty = true; writer->byte_sink = serd_byte_sink_new( ssink, stream, (style & SERD_STYLE_BULK) ? SERD_PAGE_SIZE : 1); + + writer->iface.handle = writer; + writer->iface.base = (SerdBaseSink)serd_writer_set_base_uri; + writer->iface.prefix = (SerdPrefixSink)serd_writer_set_prefix; + writer->iface.statement = (SerdStatementSink)serd_writer_write_statement; + writer->iface.end = (SerdEndSink)serd_writer_end_anon; + return writer; } @@ -986,6 +999,12 @@ serd_writer_free(SerdWriter* writer) free(writer); } +const SerdSink* +serd_writer_get_sink(SerdWriter* writer) +{ + return &writer->iface; +} + SerdEnv* serd_writer_get_env(SerdWriter* writer) { |