Added DynamicUCharArray
diff --git a/ndn-cpp/util/DynamicUCharArray.h b/ndn-cpp/util/DynamicUCharArray.h
new file mode 100644
index 0000000..aaa26c1
--- /dev/null
+++ b/ndn-cpp/util/DynamicUCharArray.h
@@ -0,0 +1,52 @@
+/*
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#ifndef NDN_DYNAMICUCHARARRAY_H
+#define NDN_DYNAMICUCHARARRAY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct ndn_DynamicUCharArray {
+ unsigned char *array;
+ unsigned int length;
+ unsigned char (*realloc)(unsigned char *array, unsigned int length);
+};
+
+static inline void ndn_DynamicUCharArray_init
+ (struct ndn_DynamicUCharArray *self, unsigned char *array, unsigned int length, unsigned char (*reallocFunction)(unsigned char *, unsigned int))
+{
+ self->array = array;
+ self->length = length;
+ self->realloc = reallocFunction;
+}
+
+char *ndn_DynamicUCharArray_reallocArray(struct ndn_DynamicUCharArray *self, unsigned int length);
+
+static inline char *ndn_DynamicUCharArray_ensureLength(struct ndn_DynamicUCharArray *self, unsigned int length)
+{
+ if (self->length >= length)
+ return 0;
+
+ return ndn_DynamicUCharArray_reallocArray(self, length);
+}
+
+static inline char *ndn_DynamicUCharArray_set
+ (struct ndn_DynamicUCharArray *self, unsigned char *value, unsigned int valueLength, unsigned int offset)
+{
+ char *error;
+ if (error = ndn_DynamicUCharArray_ensureLength(self, valueLength + offset))
+ return error;
+ ndn_memcpy(self->array + offset, value, valueLength);
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+