aboutsummaryrefslogtreecommitdiffstats
path: root/src/node.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/node.c')
-rw-r--r--src/node.c76
1 files changed, 17 insertions, 59 deletions
diff --git a/src/node.c b/src/node.c
index 0283b14f..606789c9 100644
--- a/src/node.c
+++ b/src/node.c
@@ -117,9 +117,8 @@ serd_node_malloc(size_t n_bytes, SerdNodeFlags flags, SerdNodeType type)
const size_t size = sizeof(SerdNode) + serd_node_pad_size(n_bytes);
SerdNode* node = (SerdNode*)serd_calloc_aligned(sizeof(SerdNode), size);
- node->n_bytes = 0;
- node->flags = flags;
- node->type = type;
+ node->flags = flags;
+ node->type = type;
assert((uintptr_t)node % sizeof(SerdNode) == 0u);
return node;
@@ -165,17 +164,10 @@ serd_node_zero_pad(SerdNode* node)
SerdNode*
serd_new_simple_node(SerdNodeType type, const SerdStringView str)
{
- if (type != SERD_BLANK && type != SERD_CURIE && type != SERD_URI &&
- type != SERD_VARIABLE) {
- return NULL;
- }
-
- SerdNodeFlags flags = 0;
- const size_t n_bytes = str.buf ? serd_strlen(str.buf, &flags) : 0;
- SerdNode* node = serd_node_malloc(n_bytes, flags, type);
+ SerdNode* const node = serd_node_malloc(str.len, 0, type);
- memcpy(serd_node_buffer(node), str.buf, n_bytes);
- node->n_bytes = n_bytes;
+ memcpy(serd_node_buffer(node), str.buf, str.len);
+ node->n_bytes = str.len;
serd_node_check_padding(node);
return node;
@@ -184,32 +176,28 @@ serd_new_simple_node(SerdNodeType type, const SerdStringView str)
SerdNode*
serd_new_string(const SerdStringView str)
{
- SerdNodeFlags flags = 0;
- const size_t n_bytes = serd_substrlen(str.buf, str.len, &flags);
- SerdNode* node = serd_node_malloc(n_bytes, flags, SERD_LITERAL);
+ SerdNodeFlags flags = 0;
+ SerdNode* node = serd_node_malloc(str.len, flags, SERD_LITERAL);
memcpy(serd_node_buffer(node), str.buf, str.len);
- node->n_bytes = n_bytes;
+ node->n_bytes = str.len;
serd_node_check_padding(node);
return node;
}
-/// Internal pre-measured implementation of serd_new_plain_literal
-static SerdNode*
-serd_new_plain_literal_i(const SerdStringView str,
- SerdNodeFlags flags,
- const SerdStringView lang)
+SerdNode*
+serd_new_plain_literal(const SerdStringView str, const SerdStringView lang)
{
- assert(str.len);
- assert(lang.len);
-
- flags |= SERD_HAS_LANGUAGE;
+ if (!lang.len) {
+ return serd_new_string(str);
+ }
const size_t len = serd_node_pad_size(str.len);
const size_t total_len = len + sizeof(SerdNode) + lang.len;
- SerdNode* node = serd_node_malloc(total_len, flags, SERD_LITERAL);
+ SerdNode* node = serd_node_malloc(total_len, SERD_HAS_LANGUAGE, SERD_LITERAL);
+
memcpy(serd_node_buffer(node), str.buf, str.len);
node->n_bytes = str.len;
@@ -287,34 +275,6 @@ serd_new_typed_literal_uri(const SerdStringView str,
return node;
}
-/// Internal pre-measured implementation of serd_new_typed_literal
-static SerdNode*
-serd_new_typed_literal_i(const SerdStringView str,
- SerdNodeFlags flags,
- SerdNodeType datatype_type,
- const SerdStringView datatype)
-{
- assert(str.len);
- assert(datatype.len);
- assert(strcmp(datatype.buf, NS_RDF "langString"));
-
- return serd_new_typed_literal_expanded(
- str, flags, datatype_type, datatype, SERD_EMPTY_STRING());
-}
-
-SerdNode*
-serd_new_plain_literal(const SerdStringView str, const SerdStringView lang)
-{
- if (!lang.len) {
- return serd_new_string(str);
- }
-
- SerdNodeFlags flags = 0;
- serd_strlen(str.buf, &flags);
-
- return serd_new_plain_literal_i(str, flags, lang);
-}
-
SerdNode*
serd_new_typed_literal(const SerdStringView str,
const SerdStringView datatype_uri)
@@ -327,10 +287,8 @@ serd_new_typed_literal(const SerdStringView str,
return NULL;
}
- SerdNodeFlags flags = 0;
- serd_strlen(str.buf, &flags);
-
- return serd_new_typed_literal_i(str, flags, SERD_URI, datatype_uri);
+ return serd_new_typed_literal_expanded(
+ str, 0, SERD_URI, datatype_uri, SERD_EMPTY_STRING());
}
SerdNode*