From 011919ef0c77d7bd27b6554190028dde18b78d63 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Thu, 7 Nov 2013 17:41:08 +0100 Subject: [PATCH] Shallow copy now does new to create a heap instance; which should be wrapped by a smart pointer --- .../eclipse/EclipseState/Schedule/CompletionSet.cpp | 8 ++++---- .../eclipse/EclipseState/Schedule/CompletionSet.hpp | 4 ++-- .../Schedule/tests/CompletionSetTests.cpp | 12 +++++++----- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/opm/parser/eclipse/EclipseState/Schedule/CompletionSet.cpp b/opm/parser/eclipse/EclipseState/Schedule/CompletionSet.cpp index c39b3c2d4..25172df7d 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/CompletionSet.cpp +++ b/opm/parser/eclipse/EclipseState/Schedule/CompletionSet.cpp @@ -31,7 +31,7 @@ namespace Opm { } - CompletionConstPtr CompletionSet::get(size_t index) { + CompletionConstPtr CompletionSet::get(size_t index) const { if (index >= m_completions.size()) throw std::range_error("Out of bounds"); @@ -55,11 +55,11 @@ namespace Opm { } - CompletionSet CompletionSet::shallowCopy() { - CompletionSet copy; + CompletionSet * CompletionSet::shallowCopy() { + CompletionSet * copy = new CompletionSet(); for (size_t ic = 0; ic < m_completions.size(); ic++) { CompletionConstPtr completion = m_completions[ic]; - copy.m_completions.push_back( completion ); + copy->m_completions.push_back( completion ); } return copy; } diff --git a/opm/parser/eclipse/EclipseState/Schedule/CompletionSet.hpp b/opm/parser/eclipse/EclipseState/Schedule/CompletionSet.hpp index cd0a274d3..b68135827 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/CompletionSet.hpp +++ b/opm/parser/eclipse/EclipseState/Schedule/CompletionSet.hpp @@ -35,8 +35,8 @@ namespace Opm { CompletionSet(); void add(CompletionConstPtr completion); size_t size() const; - CompletionSet shallowCopy(); - CompletionConstPtr get(size_t index); + CompletionSet * shallowCopy(); + CompletionConstPtr get(size_t index) const; private: std::vector m_completions; }; diff --git a/opm/parser/eclipse/EclipseState/Schedule/tests/CompletionSetTests.cpp b/opm/parser/eclipse/EclipseState/Schedule/tests/CompletionSetTests.cpp index c37b9ea75..2f6b45f2b 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/tests/CompletionSetTests.cpp +++ b/opm/parser/eclipse/EclipseState/Schedule/tests/CompletionSetTests.cpp @@ -55,6 +55,8 @@ BOOST_AUTO_TEST_CASE(AddCompletionSizeCorrect) { completionSet.add( completion2 ); BOOST_CHECK_EQUAL( 2U , completionSet.size() ); + + BOOST_CHECK_EQUAL( completion1 , completionSet.get(0)); } @@ -101,10 +103,10 @@ BOOST_AUTO_TEST_CASE(AddCompletionShallowCopy) { completionSet.add( completion3 ); BOOST_CHECK_EQUAL( 3U , completionSet.size() ); - Opm::CompletionSet copy = completionSet.shallowCopy(); - BOOST_CHECK_EQUAL( 3U , copy.size() ); + Opm::CompletionSetConstPtr copy = Opm::CompletionSetConstPtr( completionSet.shallowCopy() ); + BOOST_CHECK_EQUAL( 3U , copy->size() ); - BOOST_CHECK_EQUAL( completion1 , copy.get(0)); - BOOST_CHECK_EQUAL( completion2 , copy.get(1)); - BOOST_CHECK_EQUAL( completion3 , copy.get(2)); + BOOST_CHECK_EQUAL( completion1 , copy->get(0)); + BOOST_CHECK_EQUAL( completion2 , copy->get(1)); + BOOST_CHECK_EQUAL( completion3 , copy->get(2)); }