From 37cdfaba549bb1dc30cfb3c17974dea331a5d1ac Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Mon, 1 May 2017 21:43:10 +0200 Subject: [PATCH] GCC-5 compatibility: remove the last remaining auto_ptrs --- src/lib/p.hpp | 3 +-- src/lib/scoped-holder-transfer.hpp | 1 + src/lib/scoped-holder.hpp | 4 ++-- src/proc/mobject/builder/toolfactory.cpp | 13 ++++++------- src/proc/mobject/builder/toolfactory.hpp | 4 ++-- src/proc/play/dummy-player-service.cpp | 4 ++-- tests/library/custom-shared-ptr-test.cpp | 21 ++++----------------- 7 files changed, 18 insertions(+), 32 deletions(-) diff --git a/src/lib/p.hpp b/src/lib/p.hpp index d604734e6..e4b9794bc 100644 --- a/src/lib/p.hpp +++ b/src/lib/p.hpp @@ -86,13 +86,12 @@ namespace lib { P (P const&& rr) : BASE(rr) {} template P (shared_ptr const& r) : BASE(r) {} template explicit P (weak_ptr const& wr) : BASE(wr) {} - template explicit P (std::auto_ptr && ar) : BASE(std::move(ar)) {} + template explicit P (std::unique_ptr&& u) : BASE(u.release()) {} P& operator= (P const& r) { BASE::operator= (r); return *this; } P& operator= (P const&& rr) { BASE::operator= (rr); return *this; } template P& operator=(shared_ptr const& sr) { BASE::operator= (sr); return *this; } - template P& operator=(std::auto_ptr && ar) { BASE::operator= (std::move(ar)); return *this; } TAR* get() const { return dynamic_cast (BASE::get()); } TAR& operator*() const { return *get(); } diff --git a/src/lib/scoped-holder-transfer.hpp b/src/lib/scoped-holder-transfer.hpp index 2d19cc3cb..f8087308b 100644 --- a/src/lib/scoped-holder-transfer.hpp +++ b/src/lib/scoped-holder-transfer.hpp @@ -70,6 +70,7 @@ namespace lib { * std::unique_ptr or even the behaviour of a plain * old raw pointer, which is equivalent to \c true * when the pointer isn'T \c NULL + * @deprecated obsoleted by C++11 rvalue references * */ template> diff --git a/src/lib/scoped-holder.hpp b/src/lib/scoped-holder.hpp index 336215eb3..15a41a148 100644 --- a/src/lib/scoped-holder.hpp +++ b/src/lib/scoped-holder.hpp @@ -98,8 +98,8 @@ namespace lib { { } template - explicit ScopedPtrHolder (std::auto_ptr p) // never throws - : _Parent(p.release()) + explicit ScopedPtrHolder (std::unique_ptr pu) // never throws + : _Parent(pu.release()) { } ScopedPtrHolder (ScopedPtrHolder const& ref) diff --git a/src/proc/mobject/builder/toolfactory.cpp b/src/proc/mobject/builder/toolfactory.cpp index 39d5a0ed3..81215d154 100644 --- a/src/proc/mobject/builder/toolfactory.cpp +++ b/src/proc/mobject/builder/toolfactory.cpp @@ -38,7 +38,6 @@ namespace mobject { namespace builder { using util::isnil; - using std::auto_ptr; using std::unique_ptr; @@ -46,7 +45,7 @@ namespace builder { { session::Fixture & fixedTimeline_; - auto_ptr procSegment_; + unique_ptr procSegment_; unique_ptr segmentation_; unique_ptr fabrication_; @@ -59,8 +58,8 @@ namespace builder { }; - ToolFactory::ToolFactory (session::Fixture& theTimeline) - : state_(new BuildProcessState (theTimeline)) + ToolFactory::ToolFactory (session::Fixture& theFixture) + : state_(new BuildProcessState (theFixture)) { ENSURE (state_->fixedTimeline_.isValid()); ENSURE (state_->procSegment_.get()); @@ -89,13 +88,13 @@ namespace builder { } - //////////////////////////////////////////TODO: a better idea than using auto_ptr? - auto_ptr + engine::RenderGraph& ToolFactory::getProduct () { state_->segmentation_.reset(0); state_->fabrication_.reset(0); - return state_->procSegment_; + UNIMPLEMENTED ("anything regarding the fixture and build process...."); + return *state_->procSegment_; } diff --git a/src/proc/mobject/builder/toolfactory.hpp b/src/proc/mobject/builder/toolfactory.hpp index c0a0eb57b..f82bed45b 100644 --- a/src/proc/mobject/builder/toolfactory.hpp +++ b/src/proc/mobject/builder/toolfactory.hpp @@ -73,9 +73,9 @@ namespace builder { /** receive the finished product of the build process; effectively * releases any other builder tool object - * //////////////////////////////////////////TODO a better idea than using auto_ptr? + * @todo unclear what to do and to return here */ - std::auto_ptr getProduct (); + engine::RenderGraph& getProduct (); }; diff --git a/src/proc/play/dummy-player-service.cpp b/src/proc/play/dummy-player-service.cpp index 774e29785..5b441c683 100644 --- a/src/proc/play/dummy-player-service.cpp +++ b/src/proc/play/dummy-player-service.cpp @@ -46,7 +46,7 @@ namespace proc { using std::string; using lumiera::Subsys; - using std::auto_ptr; + using std::unique_ptr; using std::bind; @@ -263,7 +263,7 @@ namespace proc { ProcessImpl* DummyPlayerService::start (LumieraDisplaySlot viewerHandle) { - auto_ptr newProcess (new ProcessImpl (viewerHandle)); + unique_ptr newProcess (new ProcessImpl (viewerHandle)); REQUIRE (!newProcess->isActive()); newProcess->setRate(25); diff --git a/tests/library/custom-shared-ptr-test.cpp b/tests/library/custom-shared-ptr-test.cpp index 53d68ebf7..a1a3882e1 100644 --- a/tests/library/custom-shared-ptr-test.cpp +++ b/tests/library/custom-shared-ptr-test.cpp @@ -170,27 +170,14 @@ namespace test{ void check_ownership_transfer () { - std::auto_ptr au (new X(23)); - CHECK (au.get()); + std::unique_ptr up (new X(23)); + CHECK (up.get()); - P pX (std::move(au)); - CHECK (!au.get()); + P pX (std::move(up)); + CHECK (!up.get()); CHECK (pX); CHECK (1 == pX.use_count()); CHECK (23 == pX->x_); - - au.reset (new X(21)); - CHECK (au.get()); - - pX.reset(); - CHECK (!pX); - CHECK (0 == pX.use_count()); - - pX = std::move(au); - CHECK (!au.get()); - CHECK (pX); - CHECK (1 == pX.use_count()); - CHECK (21 == pX->x_); }