diff options
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | serd/serd.h | 26 | ||||
-rw-r--r-- | src/env.c | 10 | ||||
-rw-r--r-- | src/serd_internal.h | 6 | ||||
-rw-r--r-- | src/uri.c | 2 | ||||
-rw-r--r-- | src/writer.c | 10 | ||||
-rw-r--r-- | tests/serd_test.c | 3 |
7 files changed, 30 insertions, 28 deletions
@@ -2,6 +2,7 @@ serd (1.0.1) unstable; * Add SerdBuffer for mutable buffers to keep SerdChunk const-correct * Remove useless character counting from API + * Rename SerdChunk to SerdStringView * Use char* for strings in public API -- David Robillard <d@drobilla.net> Sat, 19 Jan 2019 12:31:12 +0000 diff --git a/serd/serd.h b/serd/serd.h index db15cfc8..e8aff1e8 100644 --- a/serd/serd.h +++ b/serd/serd.h @@ -221,12 +221,12 @@ typedef struct { } SerdNode; /** - An unterminated string fragment. + An unterminated immutable slice of a string. */ typedef struct { const char* buf; /**< Start of chunk */ size_t len; /**< Length of chunk in bytes */ -} SerdChunk; +} SerdStringView; /** A mutable buffer in memory. @@ -251,17 +251,17 @@ typedef struct { /** A parsed URI. - This struct directly refers to chunks in other strings, it does not own any + This struct directly refers to slices in other strings, it does not own any memory itself. Thus, URIs can be parsed and/or resolved against a base URI in-place without allocating memory. */ typedef struct { - SerdChunk scheme; /**< Scheme */ - SerdChunk authority; /**< Authority */ - SerdChunk path_base; /**< Path prefix if relative */ - SerdChunk path; /**< Path suffix */ - SerdChunk query; /**< Query */ - SerdChunk fragment; /**< Fragment */ + SerdStringView scheme; /**< Scheme */ + SerdStringView authority; /**< Authority */ + SerdStringView path_base; /**< Path prefix if relative */ + SerdStringView path; /**< Path suffix */ + SerdStringView query; /**< Query */ + SerdStringView fragment; /**< Fragment */ } SerdURI; /** @@ -731,7 +731,7 @@ bool serd_env_qualify(const SerdEnv* env, const SerdNode* uri, SerdNode* prefix, - SerdChunk* suffix); + SerdStringView* suffix); /** Expand `curie`. @@ -743,8 +743,8 @@ SERD_API SerdStatus serd_env_expand(const SerdEnv* env, const SerdNode* curie, - SerdChunk* uri_prefix, - SerdChunk* uri_suffix); + SerdStringView* uri_prefix, + SerdStringView* uri_suffix); /** Expand `node`, which must be a CURIE or URI, to a full URI. @@ -987,7 +987,7 @@ size_t serd_buffer_sink(const void* buf, size_t len, void* stream); /** - Finish a serialisation to a chunk with serd_buffer_sink(). + Finish a serialisation to a buffer with serd_buffer_sink(). The returned string is the result of the serialisation, which is NULL terminated (by this function) and owned by the caller. @@ -158,7 +158,7 @@ bool serd_env_qualify(const SerdEnv* env, const SerdNode* uri, SerdNode* prefix, - SerdChunk* suffix) + SerdStringView* suffix) { for (size_t i = 0; i < env->n_prefixes; ++i) { const SerdNode* const prefix_uri = &env->prefixes[i].uri; @@ -179,8 +179,8 @@ serd_env_qualify(const SerdEnv* env, SerdStatus serd_env_expand(const SerdEnv* env, const SerdNode* curie, - SerdChunk* uri_prefix, - SerdChunk* uri_suffix) + SerdStringView* uri_prefix, + SerdStringView* uri_suffix) { const char* const colon = (const char*)memchr( curie->buf, ':', curie->n_bytes + 1); @@ -206,8 +206,8 @@ serd_env_expand_node(const SerdEnv* env, { switch (node->type) { case SERD_CURIE: { - SerdChunk prefix; - SerdChunk suffix; + SerdStringView prefix; + SerdStringView suffix; if (serd_env_expand(env, node, &prefix, &suffix)) { return SERD_NODE_NULL; } diff --git a/src/serd_internal.h b/src/serd_internal.h index c87c6ae4..165aefd1 100644 --- a/src/serd_internal.h +++ b/src/serd_internal.h @@ -450,7 +450,7 @@ parse_utf8_char(const uint8_t* utf8, size_t* size) /* URI utilities */ static inline bool -chunk_equals(const SerdChunk* a, const SerdChunk* b) +slice_equals(const SerdStringView* a, const SerdStringView* b) { return a->len == b->len && !strncmp((const char*)a->buf, (const char*)b->buf, a->len); @@ -480,8 +480,8 @@ static inline size_t uri_rooted_index(const SerdURI* uri, const SerdURI* root) { if (!root || !root->scheme.len || - !chunk_equals(&root->scheme, &uri->scheme) || - !chunk_equals(&root->authority, &uri->authority)) { + !slice_equals(&root->scheme, &uri->scheme) || + !slice_equals(&root->authority, &uri->authority)) { return 0; } @@ -280,7 +280,7 @@ remove_dot_segments(const char* path, size_t len, size_t* up) /// Merge `base` and `path` in-place static void -merge(SerdChunk* base, SerdChunk* path) +merge(SerdStringView* base, SerdStringView* path) { size_t up; const char* begin = remove_dot_segments(path->buf, path->len, &up); diff --git a/src/writer.c b/src/writer.c index 3f198a93..a075f037 100644 --- a/src/writer.c +++ b/src/writer.c @@ -480,8 +480,8 @@ write_uri_node(SerdWriter* const writer, const Field field, const SerdStatementFlags flags) { - SerdNode prefix; - SerdChunk suffix; + SerdNode prefix; + SerdStringView suffix; if (is_inline_start(writer, field, flags)) { ++writer->indent; @@ -538,9 +538,9 @@ write_curie(SerdWriter* const writer, const Field field, const SerdStatementFlags flags) { - SerdChunk prefix; - SerdChunk suffix; - SerdStatus st; + SerdStringView prefix; + SerdStringView suffix; + SerdStatus st; switch (writer->syntax) { case SERD_NTRIPLES: case SERD_NQUADS: diff --git a/tests/serd_test.c b/tests/serd_test.c index 2462f1c0..04adb560 100644 --- a/tests/serd_test.c +++ b/tests/serd_test.c @@ -447,7 +447,8 @@ test_env(void) assert(serd_env_set_base_uri(env, &SERD_NODE_NULL)); assert(serd_node_equals(serd_env_get_base_uri(env, NULL), &SERD_NODE_NULL)); - SerdChunk prefix, suffix; + SerdStringView prefix; + SerdStringView suffix; assert(serd_env_expand(env, &b, &prefix, &suffix)); SerdNode xnode = serd_env_expand_node(env, &SERD_NODE_NULL); |