Deck uses automatic memory

The deck no longer exposes shared_ptrs, but uses automatically managed
memory, meaning ownership of DeckKeywords are now obvious and clear.
shared_ptr in the interface has been replaced by references.
This commit is contained in:
Jørgen Kvalsvik
2016-02-09 12:25:01 +01:00
parent a0a063e386
commit 9c577d8645
7 changed files with 127 additions and 96 deletions

View File

@@ -26,8 +26,8 @@
namespace Opm {
SCHEDULESection::SCHEDULESection( std::shared_ptr< const Deck > deck) :
Section(deck, "SCHEDULE"), unit_system( deck->getActiveUnitSystem() )
SCHEDULESection::SCHEDULESection( const Deck& deck ) :
Section(deck, "SCHEDULE"), unit_system( deck.getActiveUnitSystem() )
{
populateDeckTimeSteps();
}
@@ -45,11 +45,10 @@ namespace Opm {
void SCHEDULESection::populateDeckTimeSteps() {
DeckTimeStepPtr currentTimeStep = std::make_shared<DeckTimeStep>();
for (auto iter = begin(); iter != end(); ++iter) { //Loop keywords in schedule section
auto keyword = *iter;
if (keyword->name() == "TSTEP") {
DeckItemPtr items = keyword->getDataRecord()->getDataItem();
for (size_t item_iter = 0; item_iter < items->size(); ++item_iter) {
for( const auto& keyword : *this ) {
if (keyword.name() == "TSTEP") {
const auto& items = keyword.getDataRecord().getDataItem();
for (size_t item_iter = 0; item_iter < items.size(); ++item_iter) {
m_decktimesteps.push_back(currentTimeStep);
currentTimeStep = std::make_shared<DeckTimeStep>();
}
@@ -66,7 +65,7 @@ namespace Opm {
m_decktimesteps.push_back(currentTimeStep);
}
std::shared_ptr< UnitSystem > SCHEDULESection::getActiveUnitSystem() const {
const UnitSystem& SCHEDULESection::getActiveUnitSystem() const {
return this->unit_system;
}
}