Implement static default WireFormat, and initialize to BinaryXmlWireFormat
diff --git a/ndn-cpp/encoding/WireFormat.hpp b/ndn-cpp/encoding/WireFormat.hpp
index a7d62bc..7eb9b31 100644
--- a/ndn-cpp/encoding/WireFormat.hpp
+++ b/ndn-cpp/encoding/WireFormat.hpp
@@ -21,6 +21,42 @@
virtual ptr_lib::shared_ptr<std::vector<unsigned char> > encodeData(const Data &data);
virtual void decodeData(Data &data, const unsigned char *input, unsigned int inputLength);
+
+ /**
+ * Set the static default WireFormat used by default encoding and decoding methods.
+ * @param wireFormat A Pointer to a object of a subclass of WireFormat. This does not make a copy and
+ * the caller must ensure that the object remains allocated.
+ */
+ static void setDefaultWireFormat(WireFormat *wireFormat)
+ {
+ defaultWireFormat_ = wireFormat;
+ }
+
+ /**
+ * Return the default WireFormat used by default encoding and decoding methods which was set with
+ * setDefaultWireFormat.
+ * @return A pointer to the WireFormat object.
+ */
+ static WireFormat *getDefaultWireFormat()
+ {
+ return defaultWireFormat_;
+ }
+
+private:
+ /**
+ * This is implemented by only one of the subclasses of WireFormat to return a new object used
+ * as the initial value for the default WireFormat. If the application doesn't include that class, then the application
+ * needs to include another subclass which defines WireFormat::newInitialDefaultWireFormat.
+ * @return a new object, which is held by a shared_ptr and freed when the application exits.
+ */
+ static WireFormat *newInitialDefaultWireFormat();
+
+ /**
+ * Hold the result of newInitialDefaultWireFormat in this shared_ptr which is freed when the application exits.
+ */
+ static ptr_lib::shared_ptr<WireFormat> initialDefaultWireFormat_;
+
+ static WireFormat *defaultWireFormat_;
};
}