diff options
author | randomdan <randomdan@localhost> | 2014-09-03 19:11:03 +0000 |
---|---|---|
committer | randomdan <randomdan@localhost> | 2014-09-03 19:11:03 +0000 |
commit | de27a7b63887f4bdb335b496dc1f3757a73aae47 (patch) | |
tree | f846fb2d6e3d00c59e18d1107d546498bbe43c02 /slicer | |
parent | Ignore interfaces (diff) | |
download | slicer-de27a7b63887f4bdb335b496dc1f3757a73aae47.tar.bz2 slicer-de27a7b63887f4bdb335b496dc1f3757a73aae47.tar.xz slicer-de27a7b63887f4bdb335b496dc1f3757a73aae47.zip |
Fix serializer interface to operate only on model part, everything else is via implementor's constructor
Diffstat (limited to 'slicer')
-rw-r--r-- | slicer/json/serializer.cpp | 9 | ||||
-rw-r--r-- | slicer/json/serializer.h | 9 | ||||
-rw-r--r-- | slicer/slicer/serializer.h | 4 | ||||
-rw-r--r-- | slicer/slicer/slicer.h | 8 | ||||
-rw-r--r-- | slicer/xml/serializer.cpp | 9 | ||||
-rw-r--r-- | slicer/xml/serializer.h | 9 |
6 files changed, 34 insertions, 14 deletions
diff --git a/slicer/json/serializer.cpp b/slicer/json/serializer.cpp index e9cd58c..dcce094 100644 --- a/slicer/json/serializer.cpp +++ b/slicer/json/serializer.cpp @@ -156,6 +156,11 @@ namespace Slicer { ModelPartPtr modelPart; }; + Json::Json(const boost::filesystem::path & p) : + path(p) + { + } + void Json::ModelTreeIterateSeq(json::Value * n, ModelPartPtr mp) { @@ -228,7 +233,7 @@ namespace Slicer { } void - Json::Deserialize(const boost::filesystem::path & path, ModelPartPtr modelRoot) + Json::Deserialize(ModelPartPtr modelRoot) { std::ifstream inFile(path.string()); std::stringstream buffer; @@ -240,7 +245,7 @@ namespace Slicer { } void - Json::Serialize(const boost::filesystem::path & path, ModelPartPtr modelRoot) + Json::Serialize(ModelPartPtr modelRoot) { json::Value doc; modelRoot->OnEachChild(boost::bind(&Json::ModelTreeIterateRoot, &doc, _2)); diff --git a/slicer/json/serializer.h b/slicer/json/serializer.h index 0d70f21..c6bfb52 100644 --- a/slicer/json/serializer.h +++ b/slicer/json/serializer.h @@ -10,13 +10,18 @@ namespace json { namespace Slicer { class Json : public Serializer { public: - virtual void Deserialize(const boost::filesystem::path &, ModelPartPtr) override; - virtual void Serialize(const boost::filesystem::path &, ModelPartPtr) override; + Json(const boost::filesystem::path &); + + virtual void Deserialize(ModelPartPtr) override; + virtual void Serialize(ModelPartPtr) override; protected: static void ModelTreeIterate(json::Value *, const std::string &, ModelPartPtr mp); static void ModelTreeIterateSeq(json::Value *, ModelPartPtr mp); static void ModelTreeIterateRoot(json::Value *, ModelPartPtr mp); + + private: + const boost::filesystem::path path; }; } diff --git a/slicer/slicer/serializer.h b/slicer/slicer/serializer.h index dffa0f6..d89f9aa 100644 --- a/slicer/slicer/serializer.h +++ b/slicer/slicer/serializer.h @@ -9,8 +9,8 @@ namespace Slicer { class Serializer : public IceUtil::Shared { public: - virtual void Deserialize(const boost::filesystem::path &, ModelPartPtr) = 0; - virtual void Serialize(const boost::filesystem::path &, ModelPartPtr) = 0; + virtual void Deserialize(ModelPartPtr) = 0; + virtual void Serialize(ModelPartPtr) = 0; }; typedef IceUtil::Handle<Serializer> SerializerPtr; } diff --git a/slicer/slicer/slicer.h b/slicer/slicer/slicer.h index 0900bf9..01b040d 100644 --- a/slicer/slicer/slicer.h +++ b/slicer/slicer/slicer.h @@ -12,8 +12,8 @@ namespace Slicer { Deserialize(const boost::filesystem::path & path) { IceUtil::Handle<ModelPartForClassRoot<IceInternal::Handle<Object>>> root = new ModelPartForClassRoot<IceInternal::Handle<Object>>(); - SerializerPtr serializer = new Serializer(); - serializer->Deserialize(path, root); + SerializerPtr serializer = new Serializer(path); + serializer->Deserialize(root); return root->GetModel(); } @@ -22,8 +22,8 @@ namespace Slicer { Serialize(IceInternal::Handle<Object> object, const boost::filesystem::path & path) { IceUtil::Handle<ModelPartForClassRoot<IceInternal::Handle<Object>>> root = new ModelPartForClassRoot<IceInternal::Handle<Object>>(object); - SerializerPtr serializer = new Serializer(); - serializer->Serialize(path, root); + SerializerPtr serializer = new Serializer(path); + serializer->Serialize(root); } } diff --git a/slicer/xml/serializer.cpp b/slicer/xml/serializer.cpp index bc593da..15d954e 100644 --- a/slicer/xml/serializer.cpp +++ b/slicer/xml/serializer.cpp @@ -160,6 +160,11 @@ namespace Slicer { } }; + Xml::Xml(const boost::filesystem::path & p) : + path(p) + { + } + void Xml::DocumentTreeIterate(const xmlpp::Node * node, ModelPartPtr mp) { @@ -230,7 +235,7 @@ namespace Slicer { } void - Xml::Deserialize(const boost::filesystem::path & path, ModelPartPtr modelRoot) + Xml::Deserialize(ModelPartPtr modelRoot) { xmlpp::DomParser dom(path.string()); auto doc = dom.get_document(); @@ -238,7 +243,7 @@ namespace Slicer { } void - Xml::Serialize(const boost::filesystem::path & path, ModelPartPtr modelRoot) + Xml::Serialize(ModelPartPtr modelRoot) { xmlpp::Document doc; modelRoot->OnEachChild(boost::bind(&Xml::ModelTreeIterateRoot, &doc, _1, _2)); diff --git a/slicer/xml/serializer.h b/slicer/xml/serializer.h index 8e8a023..487070b 100644 --- a/slicer/xml/serializer.h +++ b/slicer/xml/serializer.h @@ -14,14 +14,19 @@ namespace xmlpp { namespace Slicer { class Xml : public Serializer { public: - virtual void Deserialize(const boost::filesystem::path &, ModelPartPtr) override; - virtual void Serialize(const boost::filesystem::path &, ModelPartPtr) override; + Xml(const boost::filesystem::path &); + + virtual void Deserialize(ModelPartPtr) override; + virtual void Serialize(ModelPartPtr) override; protected: static void DocumentTreeIterate(const xmlpp::Node * node, ModelPartPtr mp); static void DocumentTreeIterate(const xmlpp::Document * doc, ModelPartPtr mp); static void ModelTreeIterate(xmlpp::Element *, const std::string &, ModelPartPtr mp); static void ModelTreeIterateRoot(xmlpp::Document *, const std::string &, ModelPartPtr mp); + + private: + const boost::filesystem::path path; }; } |