Added readElementClose and peekDTag
diff --git a/ndn-cpp/encoding/BinaryXMLDecoder.c b/ndn-cpp/encoding/BinaryXMLDecoder.c
index 2e4e103..89f6a9c 100644
--- a/ndn-cpp/encoding/BinaryXMLDecoder.c
+++ b/ndn-cpp/encoding/BinaryXMLDecoder.c
@@ -31,7 +31,7 @@
   return (char *)0;
 }
 
-char *ndn_BinaryXMLDecoder_readDTag(struct ndn_BinaryXMLDecoder *self, unsigned int tag)
+char *ndn_BinaryXMLDecoder_readDTag(struct ndn_BinaryXMLDecoder *self, unsigned int expectedTag)
 {
   char *error;
   unsigned int type;
@@ -42,8 +42,41 @@
   if (type != ndn_BinaryXML_DTAG)
     return "ndn_BinaryXMLDecoder_readDTag: header type is not a DTAG";
   
-  if (value != tag)
+  if (value != expectedTag)
     return "ndn_BinaryXMLDecoder_readDTag: did not get the expected DTAG";
   
   return (char *)0;
+}
+
+char *ndn_BinaryXMLDecoder_readElementClose(struct ndn_BinaryXMLDecoder *self)
+{
+  if (self->offset >= self->inputLength)
+    return "ndn_BinaryXMLDecoder_readElementClose read past the end of the input";
+  
+  unsigned int octet = (unsigned int)(self->input[self->offset++] & 0xff);
+
+  if (octet != ndn_BinaryXML_CLOSE)
+    return "ndn_BinaryXMLDecoder_readDTag: did not get the expected element close";
+  
+  return (char *)0;
+}
+
+char *ndn_BinaryXMLDecoder_peekDTag(struct ndn_BinaryXMLDecoder *self, unsigned int expectedTag, int *gotExpectedTag)
+{
+  // Default to 0.
+  *gotExpectedTag = 0;
+  
+  unsigned int type;
+  unsigned int value;
+  unsigned int saveOffset = self->offset;
+  char *error = ndn_BinaryXMLDecoder_decodeTypeAndValue(self, &type, &value);
+  self->offset = saveOffset;
+  
+  if (error)
+    return error;
+  
+  if (type == ndn_BinaryXML_DTAG && value == expectedTag)
+    *gotExpectedTag = 1;
+  
+  return (char *)0;
 }
\ No newline at end of file