aboutsummaryrefslogtreecommitdiffstats
path: root/serd/serd.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-05-10 19:29:22 +0200
committerDavid Robillard <d@drobilla.net>2018-11-25 15:58:15 +0100
commitf2a19949d0da60465e2d68b5e66a52e0d970ebd1 (patch)
tree0e72fcb7205e52f82e3821b2da9e5335716a5115 /serd/serd.h
parent6cf2ecfab4b3cb150b154bdc1130aca022a8f89c (diff)
downloadserd-f2a19949d0da60465e2d68b5e66a52e0d970ebd1.tar.gz
serd-f2a19949d0da60465e2d68b5e66a52e0d970ebd1.tar.bz2
serd-f2a19949d0da60465e2d68b5e66a52e0d970ebd1.zip
Add SerdSink interface and hide individual function implementations
Diffstat (limited to 'serd/serd.h')
-rw-r--r--serd/serd.h68
1 files changed, 19 insertions, 49 deletions
diff --git a/serd/serd.h b/serd/serd.h
index b5b00d50..a7601f9a 100644
--- a/serd/serd.h
+++ b/serd/serd.h
@@ -712,6 +712,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
@{
@@ -818,13 +829,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.
@@ -850,13 +855,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
@@ -982,6 +980,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
@@ -1056,41 +1061,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