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.
diff --git a/ndn-cpp/c/name.h b/ndn-cpp/c/name.h
index 544e3ca..12b024b 100644
--- a/ndn-cpp/c/name.h
+++ b/ndn-cpp/c/name.h
@@ -7,6 +7,7 @@
#ifndef NDN_NAME_H
#define NDN_NAME_H
+#include "errors.h"
#include "util/blob.h"
#ifdef __cplusplus
@@ -30,7 +31,32 @@
{
ndn_Blob_initialize(&self->value, value, valueLength);
}
-
+
+/**
+/**
+ * Interpret the name component as a network-ordered number and return an integer.
+ * @param self A pointer to the ndn_NameComponent struct.
+ * @return The integer number.
+ */
+uint64_t ndn_NameComponent_toNumber(struct ndn_NameComponent *self);
+
+/**
+ * Convert binary blob name component (network-ordered number) to number, using appropriate marker from the naming convention
+ * @param comp name component to be converted
+ * @param marker required marker from the naming convention
+ *
+ * If the required marker does not exist, an exception will be thrown
+ */
+
+/**
+ * Interpret the name component as a network-ordered number with a marker and return an integer.
+ * @param self A pointer to the ndn_NameComponent struct.
+ * @param marker The required first byte of the component.
+ * @param result Return the integer number.
+ * @return 0 for success, or an error code if the first byte of the component does not equal the marker.
+ */
+ndn_Error ndn_NameComponent_toNumberWithMarker(struct ndn_NameComponent *self, uint8_t marker, uint64_t *result);
+
/**
* An ndn_Name holds an array of ndn_NameComponent.
*/