From 3deab9cdf8734aae7223db5892b00a2a4cb10b75 Mon Sep 17 00:00:00 2001 From: Kristian Flikka Date: Thu, 22 Aug 2013 15:53:57 +0200 Subject: [PATCH] Changed unknown keyword concept to be a constructor only setting --- .../eclipse/Applications/EclipseDataDoctor.cpp | 12 ++++++------ opm/parser/eclipse/Deck/DeckKeyword.cpp | 10 +++++----- opm/parser/eclipse/Deck/DeckKeyword.hpp | 2 ++ opm/parser/eclipse/Deck/tests/DeckKeywordTests.cpp | 6 +----- opm/parser/eclipse/Parser/Parser.cpp | 10 ++++------ 5 files changed, 18 insertions(+), 22 deletions(-) diff --git a/opm/parser/eclipse/Applications/EclipseDataDoctor.cpp b/opm/parser/eclipse/Applications/EclipseDataDoctor.cpp index dee30607b..0a009e485 100644 --- a/opm/parser/eclipse/Applications/EclipseDataDoctor.cpp +++ b/opm/parser/eclipse/Applications/EclipseDataDoctor.cpp @@ -33,21 +33,21 @@ void printDeckDiagnostics(Opm::DeckConstPtr deck, bool printAllKeywords) { * */ int main(int argc, char** argv) { - if (argc <= 1) { - std::cout << "Usage: " << argv[0] << " " << "[-a] (list all keywords)" << std::endl; + if (argc < 2) { + std::cout << "Usage: " << argv[0] << " " << "[-l] (list keywords)" << std::endl; exit(1); } bool printKeywords = false; - for (int i = 1; i < argc; i++) { - std::string arg(argv[i]); - if (arg == "-a") + if (argc == 3) { + std::string arg(argv[2]); + if (arg == "-l") printKeywords = true; } Opm::ParserPtr parser(new Opm::Parser(JSON_CONFIG_FILE)); std::string file = argv[1]; - Opm::DeckConstPtr deck = parser->parse(file); + Opm::DeckConstPtr deck = parser->parse(file, false); printDeckDiagnostics(deck, printKeywords); diff --git a/opm/parser/eclipse/Deck/DeckKeyword.cpp b/opm/parser/eclipse/Deck/DeckKeyword.cpp index 3a2887054..f492f0de4 100644 --- a/opm/parser/eclipse/Deck/DeckKeyword.cpp +++ b/opm/parser/eclipse/Deck/DeckKeyword.cpp @@ -25,6 +25,11 @@ namespace Opm { m_knownKeyword = true; m_keywordName = keywordName; } + + DeckKeyword::DeckKeyword(const std::string& keywordName, bool knownKeyword) { + m_knownKeyword = knownKeyword; + m_keywordName = keywordName; + } std::string DeckKeyword::name() const { return m_keywordName; @@ -34,11 +39,6 @@ namespace Opm { return m_recordList.size(); } - void DeckKeyword::setUnknown() { - m_knownKeyword = false; - } - - bool DeckKeyword::isKnown() const { return m_knownKeyword; } diff --git a/opm/parser/eclipse/Deck/DeckKeyword.hpp b/opm/parser/eclipse/Deck/DeckKeyword.hpp index 768871681..646e91a8a 100644 --- a/opm/parser/eclipse/Deck/DeckKeyword.hpp +++ b/opm/parser/eclipse/Deck/DeckKeyword.hpp @@ -19,6 +19,8 @@ namespace Opm { class DeckKeyword { public: DeckKeyword(const std::string& keywordName); + DeckKeyword(const std::string& keywordName, bool knownKeyword); + std::string name() const; size_t size() const; void addRecord(DeckRecordConstPtr record); diff --git a/opm/parser/eclipse/Deck/tests/DeckKeywordTests.cpp b/opm/parser/eclipse/Deck/tests/DeckKeywordTests.cpp index 0915d28a0..c5cde38b2 100644 --- a/opm/parser/eclipse/Deck/tests/DeckKeywordTests.cpp +++ b/opm/parser/eclipse/Deck/tests/DeckKeywordTests.cpp @@ -64,11 +64,7 @@ BOOST_AUTO_TEST_CASE(getRecord_outofrange_exceptionthrown) { } BOOST_AUTO_TEST_CASE(setUnknown_wasknown_nowunknown) { - DeckKeywordPtr deckKeyword(new DeckKeyword("KW")); - BOOST_CHECK(deckKeyword->isKnown()); - deckKeyword->setUnknown(); - BOOST_CHECK(!deckKeyword->isKnown()); - deckKeyword->setUnknown(); + DeckKeywordPtr deckKeyword(new DeckKeyword("KW", false)); BOOST_CHECK(!deckKeyword->isKnown()); } diff --git a/opm/parser/eclipse/Parser/Parser.cpp b/opm/parser/eclipse/Parser/Parser.cpp index 4a9cfa374..683950ada 100644 --- a/opm/parser/eclipse/Parser/Parser.cpp +++ b/opm/parser/eclipse/Parser/Parser.cpp @@ -63,15 +63,13 @@ namespace Opm { parseFile(deck, pathToIncludedFile.string(), parseStrict); } else { - if (m_parserKeywords.find(rawKeyword->getKeywordName()) == m_parserKeywords.end()) { - DeckKeywordPtr deckKeyword(new DeckKeyword(rawKeyword->getKeywordName())); - deckKeyword->setUnknown(); - deck->addKeyword(deckKeyword); - - } else { + if (hasKeyword(rawKeyword->getKeywordName())) { ParserKeywordConstPtr parserKeyword = m_parserKeywords[rawKeyword->getKeywordName()]; DeckKeywordConstPtr deckKeyword = parserKeyword->parse(rawKeyword); deck->addKeyword(deckKeyword); + } else { + DeckKeywordPtr deckKeyword(new DeckKeyword(rawKeyword->getKeywordName(), false)); + deck->addKeyword(deckKeyword); } } rawKeyword.reset();