diff options
author | David Robillard <d@drobilla.net> | 2018-05-10 19:29:22 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-06-21 18:12:03 +0200 |
commit | 4a9e954904faedc5da79c0f549722e2c4eb73a29 (patch) | |
tree | bbd19499766c280d571660c2f3b44ab5f40b6a61 /serd | |
parent | 10bf7f7ce76d8b679449bfc9ba8b1814a79407fb (diff) | |
download | serd-4a9e954904faedc5da79c0f549722e2c4eb73a29.tar.gz serd-4a9e954904faedc5da79c0f549722e2c4eb73a29.tar.bz2 serd-4a9e954904faedc5da79c0f549722e2c4eb73a29.zip |
Add SerdSink interface and hide individual function implementations
Diffstat (limited to 'serd')
-rw-r--r-- | serd/serd.h | 68 |
1 files changed, 19 insertions, 49 deletions
diff --git a/serd/serd.h b/serd/serd.h index 37a6ef52..ce23c653 100644 --- a/serd/serd.h +++ b/serd/serd.h @@ -700,6 +700,17 @@ typedef SerdStatus (*SerdEndSink)(void* handle, const SerdNode* node); /** + An interface that receives a stream of RDF data. +*/ +typedef struct SerdSink { + void* handle; + SerdBaseSink base; + SerdPrefixSink prefix; + SerdStatementSink statement; + SerdEndSink end; +} SerdSink; + +/** @} @name Environment @{ @@ -806,13 +817,7 @@ 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 SerdSink* sink); /** Enable or disable strict parsing. @@ -838,13 +843,6 @@ serd_reader_set_error_sink(SerdReader* reader, void* error_handle); /** - Return the `handle` passed to serd_reader_new(). -*/ -SERD_API -void* -serd_reader_get_handle(const SerdReader* reader); - -/** Set a prefix to be added to all blank node identifiers. This is useful when multiple files are to be parsed into the same output @@ -970,6 +968,13 @@ void serd_writer_free(SerdWriter* writer); /** + Return a sink interface that emits statements via `writer`. +*/ +SERD_API +const SerdSink* +serd_writer_get_sink(SerdWriter* writer); + +/** Return the env used by `writer`. */ SERD_API @@ -1044,41 +1049,6 @@ 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. */ SERD_API |