diff options
Diffstat (limited to 'src/node.c')
-rw-r--r-- | src/node.c | 76 |
1 files changed, 17 insertions, 59 deletions
@@ -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* |