Added ElementListener
diff --git a/ndn-cpp/encoding/BinaryXMLElementReader.hpp b/ndn-cpp/encoding/BinaryXMLElementReader.hpp
new file mode 100644
index 0000000..7a09679
--- /dev/null
+++ b/ndn-cpp/encoding/BinaryXMLElementReader.hpp
@@ -0,0 +1,44 @@
+/**
+ * @author: Jeff Thompson
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NDN_BINARYXMLELEMENTREADER_HPP
+#define NDN_BINARYXMLELEMENTREADER_HPP
+
+#include "../c/encoding/BinaryXMLElementReader.h"
+
+namespace ndn {
+
+/**
+ * An ElementListener extends an ndn_ElementListener struct to proved an abstract virtual onReceivedElement function which wraps
+ * the onReceivedElement used by the ndn_ElementListener struct. You must extend this class to override onReceivedElement.
+ */
+class ElementListener : private ndn_ElementListener {
+public:
+ ElementListener()
+ {
+ ndn_ElementListener_init(this, staticOnReceivedElement);
+ }
+
+ /**
+ * This is called when an entire binary XML element is received. You must extend this class to override this method.
+ * @param element pointer to the binary XML element. This buffer is only valid during this call. If you need the data
+ * later, you must copy.
+ * @param elementLength length of element
+ */
+ virtual void onReceivedElement(unsigned char *element, unsigned int elementLength) = 0;
+
+private:
+ /**
+ * Call the virtual method onReceivedElement. This is used to initialize the base ndn_ElementListener struct.
+ * @param self
+ * @param element
+ * @param elementLength
+ */
+ static void staticOnReceivedElement(struct ndn_ElementListener *self, unsigned char *element, unsigned int elementLength);
+};
+
+}
+
+#endif