aboutsummaryrefslogtreecommitdiffstats
path: root/src/env.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-02-04 15:33:36 +0100
committerDavid Robillard <d@drobilla.net>2018-05-27 18:21:57 +0200
commitd37123707c7cde6368d6d368995628ad4809913c (patch)
tree06562aa8168d0e6392108959afadb9b99260f9ce /src/env.c
parente0a6647ce80ee4116b5de7a0cde9a652c8e26cf1 (diff)
downloadserd-d37123707c7cde6368d6d368995628ad4809913c.tar.gz
serd-d37123707c7cde6368d6d368995628ad4809913c.tar.bz2
serd-d37123707c7cde6368d6d368995628ad4809913c.zip
Use opaque node API
Diffstat (limited to 'src/env.c')
-rw-r--r--src/env.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/env.c b/src/env.c
index 95e255cb..f1bfd2d7 100644
--- a/src/env.c
+++ b/src/env.c
@@ -98,7 +98,7 @@ serd_env_find(const SerdEnv* env,
for (size_t i = 0; i < env->n_prefixes; ++i) {
const SerdNode* const prefix_name = &env->prefixes[i].name;
if (prefix_name->n_bytes == name_len) {
- if (!memcmp(prefix_name->buf, name, name_len)) {
+ if (!memcmp(serd_node_get_string(prefix_name), name, name_len)) {
return &env->prefixes[i];
}
}
@@ -111,7 +111,8 @@ serd_env_add(SerdEnv* env,
const SerdNode* name,
const SerdNode* uri)
{
- SerdPrefix* const prefix = serd_env_find(env, name->buf, name->n_bytes);
+ const char* name_str = serd_node_get_string(name);
+ SerdPrefix* const prefix = serd_env_find(env, name_str, name->n_bytes);
if (prefix) {
SerdNode old_prefix_uri = prefix->uri;
prefix->uri = serd_node_copy(uri);
@@ -132,7 +133,7 @@ serd_env_set_prefix(SerdEnv* env,
{
if (!name->buf || uri->type != SERD_URI) {
return SERD_ERR_BAD_ARG;
- } else if (serd_uri_string_has_scheme(uri->buf)) {
+ } else if (serd_uri_string_has_scheme(serd_node_get_string(uri))) {
// Set prefix to absolute URI
serd_env_add(env, name, uri);
} else {
@@ -191,11 +192,12 @@ serd_env_qualify(const SerdEnv* env,
for (size_t i = 0; i < env->n_prefixes; ++i) {
const SerdNode* const prefix_uri = &env->prefixes[i].uri;
if (uri->n_bytes >= prefix_uri->n_bytes) {
- if (!strncmp((const char*)uri->buf,
- (const char*)prefix_uri->buf,
- prefix_uri->n_bytes)) {
+ const char* prefix_str = serd_node_get_string(prefix_uri);
+ const char* uri_str = serd_node_get_string(uri);
+
+ if (!strncmp(uri_str, prefix_str, prefix_uri->n_bytes)) {
*prefix = env->prefixes[i].name;
- suffix->buf = uri->buf + prefix_uri->n_bytes;
+ suffix->buf = uri_str + prefix_uri->n_bytes;
suffix->len = uri->n_bytes - prefix_uri->n_bytes;
if (is_name(suffix->buf, suffix->len)) {
return true;
@@ -213,19 +215,19 @@ serd_env_expand(const SerdEnv* env,
SerdSlice* uri_prefix,
SerdSlice* uri_suffix)
{
- const char* const colon = (const char*)memchr(
- curie->buf, ':', curie->n_bytes + 1);
+ const char* const str = serd_node_get_string(curie);
+ const char* const colon = (const char*)memchr(str, ':', curie->n_bytes + 1);
if (curie->type != SERD_CURIE || !colon) {
return SERD_ERR_BAD_ARG;
}
- const size_t name_len = colon - curie->buf;
- const SerdPrefix* const prefix = serd_env_find(env, curie->buf, name_len);
+ const size_t name_len = colon - str;
+ const SerdPrefix* const prefix = serd_env_find(env, str, name_len);
if (prefix) {
- uri_prefix->buf = prefix->uri.buf;
+ uri_prefix->buf = serd_node_get_string(&prefix->uri);
uri_prefix->len = prefix->uri.n_bytes;
uri_suffix->buf = colon + 1;
- uri_suffix->len = curie->n_bytes - (colon - curie->buf) - 1;
+ uri_suffix->len = curie->n_bytes - (colon - str) - 1;
return SERD_SUCCESS;
}
return SERD_ERR_BAD_CURIE;