aboutsummaryrefslogtreecommitdiffstats
path: root/serd
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-06-15 15:15:55 -0400
committerDavid Robillard <d@drobilla.net>2019-12-19 20:55:25 -0500
commitc566f7ca434f28f68959c6c345babd07aa12e716 (patch)
treed273f29224459bffe0ca4310b81a2cc78d03e7d5 /serd
parent148fd83672c219138499380664d5e0fe37605ea7 (diff)
downloadserd-c566f7ca434f28f68959c6c345babd07aa12e716.tar.gz
serd-c566f7ca434f28f68959c6c345babd07aa12e716.tar.bz2
serd-c566f7ca434f28f68959c6c345babd07aa12e716.zip
Make SerdSink opaque
Diffstat (limited to 'serd')
-rw-r--r--serd/serd.h63
1 files changed, 52 insertions, 11 deletions
diff --git a/serd/serd.h b/serd/serd.h
index 098fe6a0..687d6398 100644
--- a/serd/serd.h
+++ b/serd/serd.h
@@ -100,6 +100,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 {
@@ -833,17 +838,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
@{
@@ -972,6 +966,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`.