summaryrefslogtreecommitdiff
path: root/slicer/xml/serializer.h
diff options
context:
space:
mode:
Diffstat (limited to 'slicer/xml/serializer.h')
-rw-r--r--slicer/xml/serializer.h27
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 {