diff options
author | David Robillard <d@drobilla.net> | 2018-04-29 15:24:05 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2019-04-13 19:15:32 +0200 |
commit | 0a375ebfb29b08d55824d9c18ea3812b8f6b9010 (patch) | |
tree | 50c2c7f9a0f2453465f8ac0b5c2cf503730f443e /serd | |
parent | 38ab5fbb4dd2bc6cb24b80cc346546677f3d2813 (diff) | |
download | serd-0a375ebfb29b08d55824d9c18ea3812b8f6b9010.tar.gz serd-0a375ebfb29b08d55824d9c18ea3812b8f6b9010.tar.bz2 serd-0a375ebfb29b08d55824d9c18ea3812b8f6b9010.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 e90d43e7..5e2b2d6f 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 |