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