Added BinaryXMLEncoder
diff --git a/ndn-cpp/encoding/BinaryXMLEncoder.hpp b/ndn-cpp/encoding/BinaryXMLEncoder.hpp
new file mode 100644
index 0000000..de00a97
--- /dev/null
+++ b/ndn-cpp/encoding/BinaryXMLEncoder.hpp
@@ -0,0 +1,53 @@
+/*
+ * Author: Jeff Thompson
+ *
+ * BSD license, See the LICENSE file for more information.
+ */
+
+#ifndef NDN_BINARYXMLENCODER_HPP
+#define NDN_BINARYXMLENCODER_HPP
+
+#include <cstdlib>
+#include <stdexcept>
+#include "../c/encoding/BinaryXMLEncoder.h"
+
+namespace ndn {
+
+/**
+ * A BinaryXMLEncoder wraps a C ndn_BinaryXMLEncoder struct and related functions.
+ */
+class BinaryXMLEncoder {
+public:
+ /**
+ * Initialize the base ndn_BinaryXMLEncoder struct with an initial array of 16 bytes. Use simpleRealloc.
+ */
+ BinaryXMLEncoder()
+ {
+ const unsigned int initialLength = 16;
+ ndn_BinaryXMLEncoder_init(&base_, (unsigned char *)malloc(initialLength), initialLength, simpleRealloc);
+ }
+
+ /**
+ * Wrap the C stdlib realloc to convert to/from void * to unsigned char *.
+ * @param array the allocated array buffer to realloc
+ * @param length the length for the new array buffer
+ * @return the new allocated array buffer
+ */
+ static unsigned char *simpleRealloc(unsigned char *array, unsigned int length)
+ {
+ return (unsigned char *)realloc(array, length);
+ }
+
+ /**
+ * Return a pointer to the base ndn_BinaryXMLEncoder struct.
+ * @return
+ */
+ struct ndn_BinaryXMLEncoder *getEncoder() { return &base_; }
+
+private:
+ struct ndn_BinaryXMLEncoder base_;
+};
+
+}
+
+#endif