diff options
-rw-r--r-- | slicer/slicer/modelParts.h | 21 | ||||
-rw-r--r-- | slicer/slicer/slicer.h | 9 | ||||
-rw-r--r-- | slicer/test/serializers.cpp | 6 |
3 files changed, 6 insertions, 30 deletions
diff --git a/slicer/slicer/modelParts.h b/slicer/slicer/modelParts.h index 73bdff2..8cf525a 100644 --- a/slicer/slicer/modelParts.h +++ b/slicer/slicer/modelParts.h @@ -204,27 +204,12 @@ namespace Slicer { template<typename T> class DLL_PUBLIC ModelPartForRoot : public ModelPart { public: - ModelPartForRoot() : - ModelObject(new T()), - owned(true), - mp(ModelPartFor(*ModelObject)) - { - } - ModelPartForRoot(T & o) : ModelObject(&o), - owned(false), mp(ModelPartFor(*ModelObject)) { } - ~ModelPartForRoot() - { - if (owned) { - delete ModelObject; - } - } - virtual ChildRefPtr GetAnonChildRef(const HookFilter &) override { mp->Create(); @@ -245,11 +230,6 @@ namespace Slicer { ch(rootName, mp, NULL); } - T & GetModel() - { - return *ModelObject; - } - virtual bool HasValue() const override { return ModelObject && mp->HasValue(); } virtual ModelPartType GetType() const override @@ -261,7 +241,6 @@ namespace Slicer { private: T * ModelObject; - bool owned; ModelPartPtr mp; DLL_PUBLIC static std::string rootName; }; diff --git a/slicer/slicer/slicer.h b/slicer/slicer/slicer.h index 6efaa38..8a439d9 100644 --- a/slicer/slicer/slicer.h +++ b/slicer/slicer/slicer.h @@ -17,9 +17,9 @@ namespace Slicer { Object DeserializeAnyWith(DeserializerPtr deserializer) { - IceUtil::Handle<ModelPartForRoot<Object>> root = new ModelPartForRoot<Object>(); - deserializer->Deserialize(root); - return root->GetModel(); + Object object; + deserializer->Deserialize(new ModelPartForRoot<Object>(object)); + return object; } template <typename Deserializer, typename Object, typename ... SerializerParams> @@ -40,8 +40,7 @@ namespace Slicer { void SerializeAnyWith(Object object, SerializerPtr serializer) { - IceUtil::Handle<ModelPartForRoot<Object>> root = new ModelPartForRoot<Object>(object); - serializer->Serialize(root); + serializer->Serialize(new ModelPartForRoot<Object>(object)); } template <typename Serializer, typename Object, typename ... SerializerParams> diff --git a/slicer/test/serializers.cpp b/slicer/test/serializers.cpp index 4870bec..f2adced 100644 --- a/slicer/test/serializers.cpp +++ b/slicer/test/serializers.cpp @@ -456,13 +456,11 @@ BOOST_AUTO_TEST_CASE( xml_streams ) BOOST_AUTO_TEST_CASE( invalid_enum ) { - IceUtil::Handle<Slicer::ModelPartForRoot<TestModule::SomeNumbers>> rootmp = new Slicer::ModelPartForRoot<TestModule::SomeNumbers>(); - Slicer::DeserializerPtr jdeserializer = new Slicer::JsonFileDeserializer(root / "initial" / "invalidEnum.json"); - BOOST_REQUIRE_THROW(jdeserializer->Deserialize(rootmp), Slicer::InvalidEnumerationValue); + BOOST_REQUIRE_THROW(Slicer::DeserializeAnyWith<TestModule::SomeNumbers>(jdeserializer), Slicer::InvalidEnumerationValue); Slicer::DeserializerPtr xdeserializer = new Slicer::XmlFileDeserializer(root / "initial" / "invalidEnum.xml"); - BOOST_REQUIRE_THROW(xdeserializer->Deserialize(rootmp), Slicer::InvalidEnumerationValue); + BOOST_REQUIRE_THROW(Slicer::DeserializeAnyWith<TestModule::SomeNumbers>(xdeserializer), Slicer::InvalidEnumerationValue); } BOOST_AUTO_TEST_SUITE_END(); |