From 17b0fa6000573bd74a6968f5e4ff528c760f4de3 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 20 Dec 2018 13:02:24 -0500 Subject: Add serd_node_compare() --- src/node.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/node.c') diff --git a/src/node.c b/src/node.c index 98585178..e2f57a14 100644 --- a/src/node.c +++ b/src/node.c @@ -369,6 +369,25 @@ serd_node_equals(const SerdNode* a, const SerdNode* b) return serd_node_total_size(b) == a_size && !memcmp(a, b, a_size); } +int +serd_node_compare(const SerdNode* a, const SerdNode* b) +{ + if (a == b) { + return 0; + } else if (!a) { + return -1; + } else if (!b) { + return 1; + } else if (a->type != b->type) { + return (a->type < b->type) ? -1 : 1; + } + + const int cmp = strcmp(serd_node_string(a), serd_node_string(b)); + return cmp ? cmp + : serd_node_compare(serd_node_maybe_get_meta_c(a), + serd_node_maybe_get_meta_c(b)); +} + static size_t serd_uri_string_length(const SerdURI* uri) { -- cgit v1.2.1