Name: Added Component toNumber and toNumberWithMarker.
diff --git a/ndn-cpp/c/name.c b/ndn-cpp/c/name.c
index a81fbb3..d6864e9 100644
--- a/ndn-cpp/c/name.c
+++ b/ndn-cpp/c/name.c
@@ -7,6 +7,34 @@
#include "util/ndn_memory.h"
#include "name.h"
+uint64_t ndn_NameComponent_toNumber(struct ndn_NameComponent *self)
+{
+ uint64_t result = 0;
+ size_t i;
+ for (i = 0; i < self->value.length; ++i) {
+ result *= 256;
+ result += (uint64_t)self->value.value[i];
+ }
+
+ return result;
+}
+
+ndn_Error ndn_NameComponent_toNumberWithMarker(struct ndn_NameComponent *self, uint8_t marker, uint64_t *result)
+{
+ if (self->value.length == 0 || self->value.value[0] != marker)
+ return NDN_ERROR_Name_component_does_not_begin_with_the_expected_marker;
+
+ uint64_t localResult = 0;
+ size_t i;
+ for (i = 1; i < self->value.length; ++i) {
+ localResult *= 256;
+ localResult += (uint64_t)self->value.value[i];
+ }
+
+ *result = localResult;
+ return NDN_ERROR_success;
+}
+
int ndn_Name_match(struct ndn_Name *self, struct ndn_Name *name)
{
// This name is longer than the name we are checking it against.