- virtual std::string serialize(SerializeFormat format, const Extensible* container, void* item) const = 0;
- /** Convert the string form back into an item
- * @param format The format to serialize from (not FORMAT_USER)
- * @param container The object that this item applies to
- * @param value The return from a serialize() call that was run elsewhere with this key
+ virtual void FromInternal(Extensible* container, const std::string& value);
+
+ /** Sets an ExtensionItem using a value in the network format.
+ * @param container A container the ExtensionItem should be set on.
+ * @param value A value in the network format.
+ */
+ virtual void FromNetwork(Extensible* container, const std::string& value);
+
+ /** Gets an ExtensionItem's value in a human-readable format.
+ * @param container The container the ExtensionItem is set on.
+ * @param item The value to convert to a human-readable format.
+ * @return The value specified in \p item in a human readable format.
+ */
+ virtual std::string ToHuman(const Extensible* container, void* item) const;
+ /** Gets an ExtensionItem's value in the internal format.
+ * @param container The container the ExtensionItem is set on.
+ * @param item The value to convert to the internal format.
+ * @return The value specified in \p item in the internal format.
+ */
+ virtual std::string ToInternal(const Extensible* container, void* item) const ;
+
+ /** Gets an ExtensionItem's value in the network format.
+ * @param container The container the ExtensionItem is set on.
+ * @param item The value to convert to the network format.
+ * @return The value specified in \p item in the network format.
+ */
+ virtual std::string ToNetwork(const Extensible* container, void* item) const;
+
+ /** Deallocates the specified ExtensionItem value.
+ * @param container The container that the ExtensionItem is set on.
+ * @param item The item to deallocate.