diff options
author | David Robillard <d@drobilla.net> | 2018-05-11 18:11:44 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-05-27 18:23:15 +0200 |
commit | 4bc530b356ed4b390816669725e684d038e48aa0 (patch) | |
tree | 4a79ccbd7e3fa8dc53f85d93fab19d09f99c5c0d /src/writer.c | |
parent | 1f4990c7d2e297dc0252ff193e66339d8db38837 (diff) | |
download | serd-4bc530b356ed4b390816669725e684d038e48aa0.tar.gz serd-4bc530b356ed4b390816669725e684d038e48aa0.tar.bz2 serd-4bc530b356ed4b390816669725e684d038e48aa0.zip |
Clean up node construction API
Diffstat (limited to 'src/writer.c')
-rw-r--r-- | src/writer.c | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/src/writer.c b/src/writer.c index 2ee3412a..2f17d86d 100644 --- a/src/writer.c +++ b/src/writer.c @@ -15,6 +15,7 @@ */ #include "byte_sink.h" +#include "env.h" #include "node.h" #include "serd_internal.h" #include "stack.h" @@ -99,7 +100,6 @@ struct SerdWriterImpl { SerdEnv* env; SerdNode* root_node; SerdURI root_uri; - SerdURI base_uri; SerdStack anon_stack; SerdByteSink byte_sink; SerdErrorSink error_sink; @@ -527,19 +527,18 @@ write_uri_node(SerdWriter* const writer, write_sep(writer, SEP_URI_BEGIN); if (writer->style & SERD_STYLE_RESOLVED) { - SerdURI in_base_uri, uri, abs_uri; - serd_env_get_base_uri(writer->env, &in_base_uri); + const SerdURI* base_uri = serd_env_get_parsed_base_uri(writer->env); + SerdURI uri, abs_uri; serd_uri_parse(node_str, &uri); - serd_uri_resolve(&uri, &in_base_uri, &abs_uri); - bool rooted = uri_is_under(&writer->base_uri, &writer->root_uri); - SerdURI* root = rooted ? &writer->root_uri : & writer->base_uri; + serd_uri_resolve(&uri, base_uri, &abs_uri); + bool rooted = uri_is_under(base_uri, &writer->root_uri); + const SerdURI* root = rooted ? &writer->root_uri : base_uri; if (!uri_is_under(&abs_uri, root) || writer->syntax == SERD_NTRIPLES || writer->syntax == SERD_NQUADS) { serd_uri_serialise(&abs_uri, uri_sink, writer); } else { - serd_uri_serialise_relative( - &uri, &writer->base_uri, root, uri_sink, writer); + serd_uri_serialise_relative(&uri, base_uri, root, uri_sink, writer); } } else { write_uri_from_node(writer, node); @@ -863,13 +862,12 @@ serd_writer_finish(SerdWriter* writer) } SerdWriter* -serd_writer_new(SerdWorld* world, - SerdSyntax syntax, - SerdStyle style, - SerdEnv* env, - const SerdURI* base_uri, - SerdSink ssink, - void* stream) +serd_writer_new(SerdWorld* world, + SerdSyntax syntax, + SerdStyle style, + SerdEnv* env, + SerdSink ssink, + void* stream) { const WriteContext context = WRITE_CONTEXT_NULL; SerdWriter* writer = (SerdWriter*)calloc(1, sizeof(SerdWriter)); @@ -879,7 +877,6 @@ serd_writer_new(SerdWorld* world, writer->env = env; writer->root_node = NULL; writer->root_uri = SERD_URI_NULL; - writer->base_uri = base_uri ? *base_uri : SERD_URI_NULL; writer->anon_stack = serd_stack_new(4 * sizeof(WriteContext)); writer->context = context; writer->list_subj = NULL; @@ -915,8 +912,6 @@ serd_writer_set_base_uri(SerdWriter* writer, const SerdNode* uri) { if (!serd_env_set_base_uri(writer->env, uri)) { - serd_env_get_base_uri(writer->env, &writer->base_uri); - if (writer->syntax == SERD_TURTLE || writer->syntax == SERD_TRIG) { if (ctx(writer, FIELD_GRAPH) || ctx(writer, FIELD_SUBJECT)) { sink(" .\n\n", 4, writer); |