diff options
author | David Robillard <d@drobilla.net> | 2018-06-15 15:15:55 -0400 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-11-25 22:12:47 +0100 |
commit | c452f0c1051186b920fdbf9a1ee2d5ad159ebb68 (patch) | |
tree | a6b4e8072127af274d24801cf804b452eeb326e5 /serd/serd.h | |
parent | cdbd9de9d8d336b0c5f867b3d6e99788518ad7e8 (diff) | |
download | serd-c452f0c1051186b920fdbf9a1ee2d5ad159ebb68.tar.gz serd-c452f0c1051186b920fdbf9a1ee2d5ad159ebb68.tar.bz2 serd-c452f0c1051186b920fdbf9a1ee2d5ad159ebb68.zip |
Make SerdSink opaque
Diffstat (limited to 'serd/serd.h')
-rw-r--r-- | serd/serd.h | 63 |
1 files changed, 52 insertions, 11 deletions
diff --git a/serd/serd.h b/serd/serd.h index 2438cabd..d518aaba 100644 --- a/serd/serd.h +++ b/serd/serd.h @@ -101,6 +101,11 @@ typedef struct SerdReaderImpl SerdReader; typedef struct SerdWriterImpl SerdWriter; /** + An interface that receives a stream of RDF data. +*/ +typedef struct SerdSinkImpl SerdSink; + +/** Return status code. */ typedef enum { @@ -795,17 +800,6 @@ 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 World @{ @@ -934,6 +928,53 @@ serd_env_foreach(const SerdEnv* env, */ /** + Create a new sink. + + Initially, the sink has no set functions and will do nothing. Use the + serd_sink_set_*_func functions to set handlers for various events. + + @param handle Opaque handle that will be passed to sink functions. +*/ +SERD_API +SerdSink* +serd_sink_new(void* handle); + +/** + Free `sink`. +*/ +SERD_API +void +serd_sink_free(SerdSink* sink); + +/** + Set a function to be called when the base URI changes. +*/ +SERD_API +SerdStatus +serd_sink_set_base_func(SerdSink* sink, SerdBaseSink base_func); + +/** + Set a function to be called when a namespace prefix is defined. +*/ +SERD_API +SerdStatus +serd_sink_set_prefix_func(SerdSink* sink, SerdPrefixSink prefix_func); + +/** + Set a function to be called when a statement is emitted. +*/ +SERD_API +SerdStatus +serd_sink_set_statement_func(SerdSink* sink, SerdStatementSink statement_func); + +/** + Set a function to be called when an anonymous node ends. +*/ +SERD_API +SerdStatus +serd_sink_set_end_func(SerdSink* sink, SerdEndSink end_func); + +/** Set the base URI. Simple wrapper for the `SerdBaseSink` of `sink`. |