From ed06ebf4d3329c0a862deb67e5fbf24f14465b19 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Wed, 4 Dec 2013 15:31:28 +0100 Subject: [PATCH] Added UNKNOWN enum value in ParserKeywordSize enum throughout. --- .../eclipse/IntegrationTests/ParseACTION.cpp | 2 +- opm/parser/eclipse/Parser/ParserKeyword.cpp | 29 +++++++++++-------- opm/parser/eclipse/Parser/ParserKeyword.hpp | 8 ++--- .../Parser/tests/ParserKeywordTests.cpp | 4 +-- 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/opm/parser/eclipse/IntegrationTests/ParseACTION.cpp b/opm/parser/eclipse/IntegrationTests/ParseACTION.cpp index 41a06f6c7..95c495bcc 100644 --- a/opm/parser/eclipse/IntegrationTests/ParseACTION.cpp +++ b/opm/parser/eclipse/IntegrationTests/ParseACTION.cpp @@ -40,7 +40,7 @@ BOOST_AUTO_TEST_CASE( parse_ACTION_OK ) { boost::filesystem::path actionFile("testdata/integration_tests/ACTION/ACTION.txt"); boost::filesystem::path actionFile2("testdata/integration_tests/ACTION/ACTION_EXCEPTION.txt"); ParserKeywordConstPtr DIMENS( new ParserKeyword("DIMENS" , (size_t) 1 , IGNORE_WARNING )); - ParserKeywordConstPtr THROW( new ParserKeyword("THROW" , THROW_EXCEPTION )); + ParserKeywordConstPtr THROW( new ParserKeyword("THROW" , UNKNOWN , THROW_EXCEPTION )); BOOST_REQUIRE( parser->loadKeywordFromFile( boost::filesystem::path( std::string(KEYWORD_DIRECTORY) + std::string("/W/WCONHIST") )) ); parser->addKeyword( DIMENS ); diff --git a/opm/parser/eclipse/Parser/ParserKeyword.cpp b/opm/parser/eclipse/Parser/ParserKeyword.cpp index ec0d91b3d..027960771 100644 --- a/opm/parser/eclipse/Parser/ParserKeyword.cpp +++ b/opm/parser/eclipse/Parser/ParserKeyword.cpp @@ -33,7 +33,7 @@ namespace Opm { - void ParserKeyword::commonInit(const std::string& name, ParserKeywordActionEnum action) { + void ParserKeyword::commonInit(const std::string& name, ParserKeywordSizeEnum sizeType , ParserKeywordActionEnum action) { if (!validName(name)) throw std::invalid_argument("Invalid name: " + name + "keyword must be all upper case, max 8 characters. Starting with character."); @@ -42,30 +42,30 @@ namespace Opm { m_name = name; m_action = action; m_record = ParserRecordPtr(new ParserRecord); + m_keywordSizeType = sizeType; } ParserKeyword::ParserKeyword(const std::string& name, ParserKeywordSizeEnum sizeType, ParserKeywordActionEnum action) { - - m_keywordSizeType = SLASH_TERMINATED; - commonInit(name, action); + if (!(sizeType == SLASH_TERMINATED || sizeType == UNKNOWN)) { + throw std::invalid_argument("Size type " + ParserKeywordSizeEnum2String(sizeType) + " can not be set explicitly."); + } + commonInit(name, sizeType , action); } ParserKeyword::ParserKeyword(const char * name, ParserKeywordSizeEnum sizeType, ParserKeywordActionEnum action) { if (!(sizeType == SLASH_TERMINATED || sizeType == UNKNOWN)) { throw std::invalid_argument("Size type " + ParserKeywordSizeEnum2String(sizeType) + " can not be set explicitly."); } - m_keywordSizeType = sizeType; - commonInit(name, action); + commonInit(name, sizeType , action); } ParserKeyword::ParserKeyword(const std::string& name, size_t fixedKeywordSize, ParserKeywordActionEnum action) { - commonInit(name, action); - m_keywordSizeType = sizeType; + commonInit(name, FIXED , action); m_fixedSize = fixedKeywordSize; } ParserKeyword::ParserKeyword(const std::string& name, const std::string& sizeKeyword, const std::string& sizeItem, ParserKeywordActionEnum action, bool isTableCollection) { - commonInit(name, action); + commonInit(name, OTHER_KEYWORD_IN_DECK , action); m_isTableCollection = isTableCollection; initSizeKeyword(sizeKeyword, sizeItem); } @@ -115,7 +115,8 @@ namespace Opm { action = ParserKeywordActionEnumFromString(jsonConfig.get_string("action")); if (jsonConfig.has_item("name")) { - commonInit(jsonConfig.get_string("name"), action); + ParserKeywordSizeEnum sizeType = UNKNOWN; + commonInit(jsonConfig.get_string("name"), sizeType , action); } else throw std::invalid_argument("Json object is missing name: property"); @@ -139,8 +140,8 @@ namespace Opm { } void ParserKeyword::initSizeKeyword(const std::string& sizeKeyword, const std::string& sizeItem) { - m_keywordSizeType = OTHER_KEYWORD_IN_DECK; m_sizeDefinitionPair = std::pair(sizeKeyword, sizeItem); + m_keywordSizeType = OTHER_KEYWORD_IN_DECK; } void ParserKeyword::initSizeKeyword(const Json::JsonObject& sizeObject) { @@ -393,9 +394,13 @@ namespace Opm { void ParserKeyword::inlineNew(std::ostream& os, const std::string& lhs, const std::string& indent) const { { const std::string actionString(ParserKeywordActionEnum2String(m_action)); + const std::string sizeString(ParserKeywordSizeEnum2String(m_keywordSizeType)); switch (m_keywordSizeType) { case SLASH_TERMINATED: - os << lhs << " = new ParserKeyword(\"" << m_name << "\"," << actionString << ");" << std::endl; + os << lhs << " = new ParserKeyword(\"" << m_name << "\"," << sizeString << "," << actionString << ");" << std::endl; + break; + case UNKNOWN: + os << lhs << " = new ParserKeyword(\"" << m_name << "\"," << sizeString << "," << actionString << ");" << std::endl; break; case FIXED: os << lhs << " = new ParserKeyword(\"" << m_name << "\",(size_t)" << m_fixedSize << "," << actionString << ");" << std::endl; diff --git a/opm/parser/eclipse/Parser/ParserKeyword.hpp b/opm/parser/eclipse/Parser/ParserKeyword.hpp index 2033a07a7..2035357d4 100644 --- a/opm/parser/eclipse/Parser/ParserKeyword.hpp +++ b/opm/parser/eclipse/Parser/ParserKeyword.hpp @@ -35,9 +35,9 @@ namespace Opm { class ParserKeyword { public: - ParserKeyword(const char * name , ParserKeywordActionEnum action = INTERNALIZE); - ParserKeyword(const std::string& name , ParserKeywordActionEnum action = INTERNALIZE); - ParserKeyword(const std::string& name, size_t fixedKeywordSize,ParserKeywordActionEnum action = INTERNALIZE); + ParserKeyword(const char * name , ParserKeywordSizeEnum sizeType = SLASH_TERMINATED , ParserKeywordActionEnum action = INTERNALIZE); + ParserKeyword(const std::string& name , ParserKeywordSizeEnum sizeType = SLASH_TERMINATED , ParserKeywordActionEnum action = INTERNALIZE); + ParserKeyword(const std::string& name , size_t fixedKeywordSize,ParserKeywordActionEnum action = INTERNALIZE); ParserKeyword(const std::string& name , const std::string& sizeKeyword , const std::string& sizeItem, ParserKeywordActionEnum action = INTERNALIZE , bool isTableCollection = false); ParserKeyword(const Json::JsonObject& jsonConfig); @@ -78,7 +78,7 @@ namespace Opm { void initSize( const Json::JsonObject& jsonConfig ); void initSizeKeyword( const std::string& sizeKeyword, const std::string& sizeItem); void initSizeKeyword(const Json::JsonObject& sizeObject); - void commonInit(const std::string& name, ParserKeywordActionEnum action); + void commonInit(const std::string& name, ParserKeywordSizeEnum sizeType , ParserKeywordActionEnum action); void addItems( const Json::JsonObject& jsonConfig); void addTableItems(); }; diff --git a/opm/parser/eclipse/Parser/tests/ParserKeywordTests.cpp b/opm/parser/eclipse/Parser/tests/ParserKeywordTests.cpp index 5385cbe2a..c0aea1105 100644 --- a/opm/parser/eclipse/Parser/tests/ParserKeywordTests.cpp +++ b/opm/parser/eclipse/Parser/tests/ParserKeywordTests.cpp @@ -204,7 +204,7 @@ BOOST_AUTO_TEST_CASE(ConstructFromJsonObject_withSizeOther) { const std::pair& sizeKW = parserKeyword.getSizeDefinitionPair(); BOOST_CHECK_EQUAL("BPR" , parserKeyword.getName()); BOOST_CHECK_EQUAL( false , parserKeyword.hasFixedSize() ); - BOOST_CHECK_EQUAL( parserKeyword.getSizeType() , OTHER_KEYWORD_IN_DECK); + BOOST_CHECK_EQUAL(OTHER_KEYWORD_IN_DECK , parserKeyword.getSizeType()); BOOST_CHECK_EQUAL("Bjarne", sizeKW.first ); BOOST_CHECK_EQUAL("BjarneIgjen" , sizeKW.second ); } @@ -406,6 +406,6 @@ BOOST_AUTO_TEST_CASE(DefaultActionISINTERNALIZE) { BOOST_AUTO_TEST_CASE(CreateWithAction) { - ParserKeywordPtr parserKeyword(new ParserKeyword("JA" , IGNORE)); + ParserKeywordPtr parserKeyword(new ParserKeyword("JA" , UNKNOWN , IGNORE)); BOOST_CHECK_EQUAL(IGNORE , parserKeyword->getAction()); }