From 9bc71471086b9f5d5789d76fb28a45c47a058cf8 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 10 May 2018 19:29:22 +0200 Subject: Add SerdSinkInterface and hide implementations --- serd/serd.h | 62 ++++++++++++++++++++----------------------------------------- 1 file changed, 20 insertions(+), 42 deletions(-) (limited to 'serd/serd.h') diff --git a/serd/serd.h b/serd/serd.h index 6add5a78..4e9b5d48 100644 --- a/serd/serd.h +++ b/serd/serd.h @@ -682,6 +682,17 @@ typedef SerdStatus (*SerdStatementSink)(void* handle, typedef SerdStatus (*SerdEndSink)(void* handle, const SerdNode* node); +/** + An interface that receives a stream of RDF data. +*/ +typedef struct SerdSinkInterface { + void* handle; + SerdBaseSink base; + SerdPrefixSink prefix; + SerdStatementSink statement; + SerdEndSink end; +} SerdSinkInterface; + /** @} @name Environment @@ -789,13 +800,8 @@ serd_env_foreach(const SerdEnv* env, */ SERD_API SerdReader* -serd_reader_new(SerdSyntax syntax, - void* handle, - void (*free_handle)(void*), - SerdBaseSink base_sink, - SerdPrefixSink prefix_sink, - SerdStatementSink statement_sink, - SerdEndSink end_sink); +serd_reader_new(SerdSyntax syntax, + const SerdSinkInterface* sink); /** Enable or disable strict parsing. @@ -952,6 +958,13 @@ SERD_API void serd_writer_free(SerdWriter* writer); +/** + Return a sink interface that emits statements via `writer`. +*/ +SERD_API +const SerdSinkInterface* +serd_writer_get_sink_interface(SerdWriter* writer); + /** Return the env used by `writer`. */ @@ -1036,41 +1049,6 @@ SerdStatus serd_writer_set_root_uri(SerdWriter* writer, const SerdNode* uri); -/** - Set a namespace prefix (and emit directive if applicable). - - Note this function can be safely casted to SerdPrefixSink. -*/ -SERD_API -SerdStatus -serd_writer_set_prefix(SerdWriter* writer, - const SerdNode* name, - const SerdNode* uri); - -/** - Write a statement. - - Note this function can be safely casted to SerdStatementSink. -*/ -SERD_API -SerdStatus -serd_writer_write_statement(SerdWriter* writer, - SerdStatementFlags flags, - const SerdNode* graph, - const SerdNode* subject, - const SerdNode* predicate, - const SerdNode* object); - -/** - Mark the end of an anonymous node's description. - - Note this function can be safely casted to SerdEndSink. -*/ -SERD_API -SerdStatus -serd_writer_end_anon(SerdWriter* writer, - const SerdNode* node); - /** Finish a write. */ -- cgit v1.2.1