diff options
author | David Robillard <d@drobilla.net> | 2018-04-29 15:24:05 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-12-30 17:58:17 -0500 |
commit | 9fd4ff5a6470f58916d7cd8578bcb839f9b5feaa (patch) | |
tree | 89fa93f202f9e992d3ea24650ec4c418493ffe6c /serd | |
parent | aebfe13a070ee542929e0ec19b4b2e9221dc1582 (diff) | |
download | serd-9fd4ff5a6470f58916d7cd8578bcb839f9b5feaa.tar.gz serd-9fd4ff5a6470f58916d7cd8578bcb839f9b5feaa.tar.bz2 serd-9fd4ff5a6470f58916d7cd8578bcb839f9b5feaa.zip |
Add SerdWorld for shared library state
Diffstat (limited to 'serd')
-rw-r--r-- | serd/serd.h | 71 |
1 files changed, 45 insertions, 26 deletions
diff --git a/serd/serd.h b/serd/serd.h index 5270c15f..8744b634 100644 --- a/serd/serd.h +++ b/serd/serd.h @@ -55,6 +55,13 @@ extern "C" { */ /** + World. + + The World represents all library state shared between various objects. +*/ +typedef struct SerdWorldImpl SerdWorld; + +/** Environment. Represents the state required to resolve a CURIE or relative URI, e.g. the @@ -723,6 +730,41 @@ typedef struct SerdSink { /** @} + @name World + @{ +*/ + +/** + Create a new Serd World. + + It is safe to use multiple worlds in one process, though no objects can be + shared between worlds. +*/ +SERD_API +SerdWorld* +serd_world_new(void); + +/** + Free `world`. +*/ +SERD_API +void +serd_world_free(SerdWorld* world); + +/** + Set a function to be called when errors occur. + + The `error_sink` will be called with `handle` as its first argument. If + no error function is set, errors are printed to stderr. +*/ +SERD_API +void +serd_world_set_error_sink(SerdWorld* world, + SerdErrorSink error_sink, + void* handle); + +/** + @} @name Environment @{ */ @@ -828,7 +870,7 @@ serd_env_foreach(const SerdEnv* env, */ SERD_API SerdReader* -serd_reader_new(SerdSyntax syntax, const SerdSink* sink); +serd_reader_new(SerdWorld* world, SerdSyntax syntax, const SerdSink* sink); /** Enable or disable strict parsing. @@ -842,18 +884,6 @@ void serd_reader_set_strict(SerdReader* reader, bool strict); /** - Set a function to be called when errors occur during reading. - - The `error_sink` will be called with `handle` as its first argument. If - no error function is set, errors are printed to stderr in GCC style. -*/ -SERD_API -void -serd_reader_set_error_sink(SerdReader* reader, - SerdErrorSink error_sink, - void* error_handle); - -/** 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 @@ -964,7 +994,8 @@ serd_reader_free(SerdReader* reader); */ SERD_API SerdWriter* -serd_writer_new(SerdSyntax syntax, +serd_writer_new(SerdWorld* world, + SerdSyntax syntax, SerdStyle style, SerdEnv* env, const SerdURI* base_uri, @@ -1015,18 +1046,6 @@ char* serd_buffer_sink_finish(SerdBuffer* stream); /** - Set a function to be called when errors occur during writing. - - The `error_sink` will be called with `handle` as its first argument. If - no error function is set, errors are printed to stderr. -*/ -SERD_API -void -serd_writer_set_error_sink(SerdWriter* writer, - SerdErrorSink error_sink, - void* error_handle); - -/** Set a prefix to be removed from matching blank node identifiers. */ SERD_API |