Added initial C-based BinaryXMLDecoder
diff --git a/ndn-cpp/encoding/BinaryXMLDecoder.c b/ndn-cpp/encoding/BinaryXMLDecoder.c
new file mode 100644
index 0000000..36466bc
--- /dev/null
+++ b/ndn-cpp/encoding/BinaryXMLDecoder.c
@@ -0,0 +1,31 @@
+/*
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#include "BinaryXML.h"
+#include "BinaryXMLDecoder.h"
+
+const char *ndn_BinaryXMLDecoder_decodeTypeAndValue(struct ndn_BinaryXMLDecoder *self, unsigned int *type, unsigned int *valueOut) {
+ unsigned int value = 0;
+
+ while (1) {
+ if (self->offset >= self->inputLen)
+ return "ndn_BinaryXMLDecoder_decodeTypeAndVal read past the end of the input";
+
+ unsigned int octet = (unsigned int)(self->input[self->offset++] & 0xff);
+
+ if (octet & ndn_BinaryXML_TT_FINAL) {
+ // Finished.
+ *type = octet & ndn_BinaryXML_TT_MASK;
+ value = (value << ndn_BinaryXML_TT_VALUE_BITS) | ((octet >> ndn_BinaryXML_TT_BITS) & ndn_BinaryXML_TT_VALUE_MASK);
+ break;
+ }
+
+ value = (value << ndn_BinaryXML_REGULAR_VALUE_BITS) | (octet & ndn_BinaryXML_REGULAR_VALUE_MASK);
+ }
+
+ *valueOut = value;
+ return (const char *)0;
+}