From 1018c9ef4cb0b5cdc4695963c770b7e507aff439 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Tue, 28 Jul 2015 09:45:49 +0200 Subject: [PATCH] Use Deck* and Deck& instead of shared_ptr. --- opm/parser/eclipse/Parser/Parser.cpp | 36 +++++++++++++-------- opm/parser/eclipse/Parser/Parser.hpp | 8 ++++- opm/parser/eclipse/Parser/ParserKeyword.cpp | 2 +- opm/parser/eclipse/Parser/ParserKeyword.hpp | 2 +- opm/parser/eclipse/Parser/ParserRecord.cpp | 6 ++-- opm/parser/eclipse/Parser/ParserRecord.hpp | 2 +- 6 files changed, 35 insertions(+), 21 deletions(-) diff --git a/opm/parser/eclipse/Parser/Parser.cpp b/opm/parser/eclipse/Parser/Parser.cpp index 48f5a318f..a023903d6 100644 --- a/opm/parser/eclipse/Parser/Parser.cpp +++ b/opm/parser/eclipse/Parser/Parser.cpp @@ -34,7 +34,7 @@ namespace Opm { struct ParserState { const ParseMode& parseMode; - DeckPtr deck; + Deck * deck; boost::filesystem::path dataFile; boost::filesystem::path rootPath; std::map pathMap; @@ -55,7 +55,7 @@ namespace Opm { ParserState(const ParseMode& __parseMode) : parseMode( __parseMode ) { - deck = std::make_shared(); + deck = new Deck(); lineNR = 0; } @@ -180,34 +180,42 @@ namespace Opm { is retained in the current implementation. */ - DeckPtr Parser::parseFile(const std::string &dataFileName, const ParseMode& parseMode) const { + Deck * Parser::newDeckFromFile(const std::string &dataFileName, const ParseMode& parseMode) const { std::shared_ptr parserState = std::make_shared(parseMode); parserState->openRootFile( dataFileName ); - parseState(parserState); - applyUnitsToDeck(parserState->deck); + applyUnitsToDeck(*parserState->deck); return parserState->deck; } - DeckPtr Parser::parseString(const std::string &data, const ParseMode& parseMode) const { + Deck * Parser::newDeckFromString(const std::string &data, const ParseMode& parseMode) const { std::shared_ptr parserState = std::make_shared(parseMode); parserState->openString( data ); parseState(parserState); - applyUnitsToDeck(parserState->deck); + applyUnitsToDeck(*parserState->deck); return parserState->deck; } + + DeckPtr Parser::parseFile(const std::string &dataFileName, const ParseMode& parseMode) const { + return std::shared_ptr( newDeckFromFile( dataFileName , parseMode)); + } + + DeckPtr Parser::parseString(const std::string &data, const ParseMode& parseMode) const { + return std::shared_ptr( newDeckFromString( data , parseMode)); + } + DeckPtr Parser::parseStream(std::shared_ptr inputStream, const ParseMode& parseMode) const { std::shared_ptr parserState = std::make_shared(parseMode); parserState->openStream( inputStream ); parseState(parserState); - applyUnitsToDeck(parserState->deck); + applyUnitsToDeck(*parserState->deck); - return parserState->deck; + return std::shared_ptr( parserState->deck ); } size_t Parser::size() const { @@ -432,7 +440,7 @@ namespace Opm { targetSize = parserKeyword->getFixedSize(); else { const std::pair sizeKeyword = parserKeyword->getSizeDefinitionPair(); - DeckConstPtr deck = parserState->deck; + const Deck * deck = parserState->deck; if (deck->hasKeyword(sizeKeyword.first)) { DeckKeywordConstPtr sizeDefinitionKeyword = deck->getKeyword(sizeKeyword.first); DeckItemPtr sizeDefinitionItem; @@ -569,10 +577,10 @@ namespace Opm { } - void Parser::applyUnitsToDeck(DeckPtr deck) const { - deck->initUnitSystem(); - for (size_t index=0; index < deck->size(); ++index) { - DeckKeywordConstPtr deckKeyword = deck->getKeyword( index ); + void Parser::applyUnitsToDeck(Deck& deck) const { + deck.initUnitSystem(); + for (size_t index=0; index < deck.size(); ++index) { + DeckKeywordConstPtr deckKeyword = deck.getKeyword( index ); if (isRecognizedKeyword( deckKeyword->name())) { ParserKeywordConstPtr parserKeyword = getParserKeywordFromDeckName( deckKeyword->name() ); if (parserKeyword->hasDimension()) { diff --git a/opm/parser/eclipse/Parser/Parser.hpp b/opm/parser/eclipse/Parser/Parser.hpp index 44b443966..d7e0b2b8d 100644 --- a/opm/parser/eclipse/Parser/Parser.hpp +++ b/opm/parser/eclipse/Parser/Parser.hpp @@ -53,6 +53,12 @@ namespace Opm { DeckPtr parseString(const std::string &data, const ParseMode& parseMode) const; DeckPtr parseStream(std::shared_ptr inputStream , const ParseMode& parseMode) const; + Deck * newDeckFromFile(const std::string &dataFileName, const ParseMode& parseMode) const; + Deck * newDeckFromString(const std::string &dataFileName, const ParseMode& parseMode) const; + + DeckPtr parseFile(const std::string &dataFile, bool strict = true) const; + DeckPtr parseString(const std::string &data, bool strict = true) const; + DeckPtr parseStream(std::shared_ptr inputStream , bool strict = true) const; /// Method to add ParserKeyword instances, these holding type and size information about the keywords and their data. void addParserKeyword(ParserKeywordConstPtr parserKeyword); @@ -67,7 +73,7 @@ namespace Opm { bool loadKeywordFromFile(const boost::filesystem::path& configFile); void loadKeywordsFromDirectory(const boost::filesystem::path& directory , bool recursive = true); - void applyUnitsToDeck(DeckPtr deck) const; + void applyUnitsToDeck(Deck& deck) const; /*! * \brief Returns the approximate number of recognized keywords in decks diff --git a/opm/parser/eclipse/Parser/ParserKeyword.cpp b/opm/parser/eclipse/Parser/ParserKeyword.cpp index ccc8b6c81..5e3b3114b 100644 --- a/opm/parser/eclipse/Parser/ParserKeyword.cpp +++ b/opm/parser/eclipse/Parser/ParserKeyword.cpp @@ -790,7 +790,7 @@ namespace Opm { } - void ParserKeyword::applyUnitsToDeck(std::shared_ptr deck , std::shared_ptr deckKeyword) const { + void ParserKeyword::applyUnitsToDeck(const Deck& deck, std::shared_ptr deckKeyword) const { for (size_t index = 0; index < deckKeyword->size(); index++) { std::shared_ptr parserRecord = getRecord(index); std::shared_ptr deckRecord = deckKeyword->getRecord(index); diff --git a/opm/parser/eclipse/Parser/ParserKeyword.hpp b/opm/parser/eclipse/Parser/ParserKeyword.hpp index 76d094b36..779100320 100644 --- a/opm/parser/eclipse/Parser/ParserKeyword.hpp +++ b/opm/parser/eclipse/Parser/ParserKeyword.hpp @@ -109,7 +109,7 @@ namespace Opm { std::string createDeclaration(const std::string& indent) const; std::string createDecl() const; std::string createCode() const; - void applyUnitsToDeck(std::shared_ptr deck , std::shared_ptr deckKeyword) const; + void applyUnitsToDeck(const Deck& deck , std::shared_ptr deckKeyword) const; private: std::pair m_sizeDefinitionPair; std::string m_name; diff --git a/opm/parser/eclipse/Parser/ParserRecord.cpp b/opm/parser/eclipse/Parser/ParserRecord.cpp index 997c02f5f..a76f5709d 100644 --- a/opm/parser/eclipse/Parser/ParserRecord.cpp +++ b/opm/parser/eclipse/Parser/ParserRecord.cpp @@ -75,15 +75,15 @@ namespace Opm { - void ParserRecord::applyUnitsToDeck(std::shared_ptr deck , std::shared_ptr deckRecord) const { + void ParserRecord::applyUnitsToDeck(const Deck& deck , std::shared_ptr deckRecord) const { for (auto iter=begin(); iter != end(); ++iter) { if ((*iter)->hasDimension()) { std::shared_ptr deckItem = deckRecord->getItem( (*iter)->name() ); std::shared_ptr parserItem = get( (*iter)->name() ); for (size_t idim=0; idim < (*iter)->numDimensions(); idim++) { - std::shared_ptr activeDimension = deck->getActiveUnitSystem()->getNewDimension( parserItem->getDimension(idim) ); - std::shared_ptr defaultDimension = deck->getDefaultUnitSystem()->getNewDimension( parserItem->getDimension(idim) ); + std::shared_ptr activeDimension = deck.getActiveUnitSystem()->getNewDimension( parserItem->getDimension(idim) ); + std::shared_ptr defaultDimension = deck.getDefaultUnitSystem()->getNewDimension( parserItem->getDimension(idim) ); deckItem->push_backDimension( activeDimension , defaultDimension ); } } diff --git a/opm/parser/eclipse/Parser/ParserRecord.hpp b/opm/parser/eclipse/Parser/ParserRecord.hpp index 6082fad81..3631363b6 100644 --- a/opm/parser/eclipse/Parser/ParserRecord.hpp +++ b/opm/parser/eclipse/Parser/ParserRecord.hpp @@ -45,7 +45,7 @@ namespace Opm { bool equal(const ParserRecord& other) const; bool hasDimension() const; bool hasItem(const std::string& itemName) const; - void applyUnitsToDeck(std::shared_ptr deck , std::shared_ptr deckRecord) const; + void applyUnitsToDeck(const Deck& deck , std::shared_ptr deckRecord) const; std::vector::const_iterator begin() const; std::vector::const_iterator end() const; private: