diff options
Diffstat (limited to 'slicer/xml/serializer.h')
-rw-r--r-- | slicer/xml/serializer.h | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/slicer/xml/serializer.h b/slicer/xml/serializer.h index fd8616c..d07a77e 100644 --- a/slicer/xml/serializer.h +++ b/slicer/xml/serializer.h @@ -8,9 +8,11 @@ #ifndef __clang__ # pragma GCC diagnostic ignored "-Wuseless-cast" #endif +#include <libxml++/document.h> #include <libxml++/nodes/element.h> #pragma GCC diagnostic pop #include <filesystem> +#include <fstream> #include <functional> #include <iosfwd> #include <slicer/modelParts.h> @@ -20,10 +22,6 @@ namespace Glib { class ustring; } -namespace xmlpp { - class Document; - class Node; -} namespace Slicer { using CurrentElementCreator = ::AdHoc::LazyPointer<xmlpp::Element, xmlpp::Element *>; @@ -41,35 +39,30 @@ namespace Slicer { static void ModelTreeIterateDictElements(xmlpp::Element * element, const ModelPartPtr & dict); }; - class DLL_PUBLIC XmlStreamSerializer : public XmlSerializer { + class DLL_PUBLIC XmlDocumentSerializer : public XmlSerializer { public: - explicit XmlStreamSerializer(std::ostream &); - void Serialize(ModelPartForRootPtr) override; protected: - std::ostream & strm; + xmlpp::Document doc; }; - class DLL_PUBLIC XmlFileSerializer : public XmlSerializer { + class DLL_PUBLIC XmlStreamSerializer : public XmlDocumentSerializer { public: - explicit XmlFileSerializer(std::filesystem::path); + explicit XmlStreamSerializer(std::ostream &); void Serialize(ModelPartForRootPtr) override; protected: - const std::filesystem::path path; + std::ostream & strm; }; - class DLL_PUBLIC XmlDocumentSerializer : public XmlSerializer { + class DLL_PUBLIC XmlFileSerializer : public XmlStreamSerializer { public: - explicit XmlDocumentSerializer(xmlpp::Document *&); - - void Serialize(ModelPartForRootPtr) override; + explicit XmlFileSerializer(const std::filesystem::path &); protected: - // cppcheck-suppress unsafeClassCanLeak - xmlpp::Document *& doc; + std::ofstream strm; }; class DLL_PUBLIC XmlDeserializer : public Deserializer { |