From e0a6647ce80ee4116b5de7a0cde9a652c8e26cf1 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 4 Feb 2018 12:40:45 +0100 Subject: Add node accessor API --- serd/serd.h | 28 ++++++++++++++++++++++++++++ src/node.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/serd/serd.h b/serd/serd.h index f753db84..1d217a3c 100644 --- a/serd/serd.h +++ b/serd/serd.h @@ -589,6 +589,34 @@ SERD_API SerdNode serd_node_new_blob(const void* buf, size_t size, bool wrap_lines); +/** + Return the type of a node (SERD_URI, SERD_BLANK, or SERD_LITERAL). +*/ +SERD_API +SerdType +serd_node_get_type(const SerdNode* node); + +/** + Return the string value of a node. +*/ +SERD_API +const char* +serd_node_get_string(const SerdNode* node); + +/** + Return the length of the string value of a node in bytes. +*/ +SERD_API +size_t +serd_node_get_length(const SerdNode* node); + +/** + Return the flags (string properties) of a node. +*/ +SERD_API +SerdNodeFlags +serd_node_get_flags(const SerdNode* node); + /** Free any data owned by `node`. diff --git a/src/node.c b/src/node.c index 7a520886..3be90856 100644 --- a/src/node.c +++ b/src/node.c @@ -383,6 +383,34 @@ serd_node_new_blob(const void* buf, size_t size, bool wrap_lines) return node; } +SERD_API +SerdType +serd_node_get_type(const SerdNode* node) +{ + return node ? node->type : SERD_NOTHING; +} + +SERD_API +const char* +serd_node_get_string(const SerdNode* node) +{ + return node->buf; +} + +SERD_API +size_t +serd_node_get_length(const SerdNode* node) +{ + return node->n_bytes; +} + +SERD_API +SerdNodeFlags +serd_node_get_flags(const SerdNode* node) +{ + return node->flags; +} + SERD_API void serd_node_free(SerdNode* node) -- cgit v1.2.1