19 #ifndef PARSER_KEYWORD_H
20 #define PARSER_KEYWORD_H
26 #include <unordered_set>
30 #include <opm/input/eclipse/Parser/ParserEnums.hpp>
31 #include <opm/input/eclipse/Parser/ParserRecord.hpp>
42 class ParserDoubleItem;
53 KeywordSize(
const std::string& in_keyword,
const std::string& in_item,
int in_shift);
54 KeywordSize(
const std::string& in_keyword,
const std::string& in_item);
55 KeywordSize(
const std::string& in_keyword,
const std::string& in_item,
bool table_collection,
int in_shift);
57 KeywordSize(std::size_t min_size,
const std::string& in_keyword,
const std::string& in_item,
bool table_collection,
int in_shift);
58 explicit KeywordSize(ParserKeywordSizeEnum size_type);
61 KeywordSize(std::size_t min_size, std::size_t fixed_size,
bool code);
63 bool table_collection()
const;
64 ParserKeywordSizeEnum size_type()
const;
66 int size_shift()
const;
67 const std::string& keyword()
const;
68 const std::string& item()
const;
69 std::optional<std::size_t> min_size()
const;
71 const std::optional<std::variant<std::size_t, std::pair<std::string, std::string>>>& max_size()
const;
72 std::string construct()
const;
78 bool is_table_collection{
false};
79 ParserKeywordSizeEnum m_size_type;
80 std::optional<std::size_t> m_min_size;
81 std::optional<std::variant<std::size_t, std::pair<std::string, std::string>>> m_max_size;
91 void initSizeKeyword(
const std::string& sizeKeyword,
const std::string& sizeItem,
bool table_collection,
int size_shift);
94 static bool validInternalName(
const std::string& name);
95 static bool validDeckName(
const std::string_view& name);
96 bool hasMatchRegex()
const;
97 void setMatchRegex(
const std::string& deckNameRegexp);
98 bool matches(
const std::string_view& )
const;
99 bool hasDimension()
const;
102 const ParserRecord& getRecord(
size_t recordIndex)
const;
104 std::vector< ParserRecord >::const_iterator begin()
const;
105 std::vector< ParserRecord >::const_iterator end()
const;
106 const std::string className()
const;
107 const std::string& getName()
const;
108 std::optional<std::size_t> min_size()
const;
109 size_t getFixedSize()
const;
110 bool hasFixedSize()
const;
111 bool isTableCollection()
const;
112 std::string getDescription()
const;
113 void setDescription(
const std::string &description);
115 bool hasMultipleDeckNames()
const;
116 void clearDeckNames();
117 void addDeckName(
const std::string& deckName );
118 void setCodeEnd(
const std::string& end);
119 const std::unordered_set<std::string>& deck_names()
const;
120 const std::string& codeEnd()
const;
122 const std::vector<std::string>& requiredKeywords()
const;
123 const std::vector<std::string>& prohibitedKeywords()
const;
124 void setRequiredKeywords(
const std::vector<std::string>&);
125 void setProhibitedKeywords(
const std::vector<std::string>&);
127 void clearValidSectionNames();
128 void addValidSectionName(
const std::string& sectionName);
129 bool isValidSection(
const std::string& sectionName)
const;
130 const std::unordered_set<std::string>& sections()
const;
133 enum ParserKeywordSizeEnum getSizeType()
const;
135 bool isDataKeyword()
const;
136 bool rawStringKeyword()
const;
137 bool isCodeKeyword()
const;
138 bool isAlternatingKeyword()
const;
139 bool isDoubleRecordKeyword()
const;
140 void setAlternatingKeyword(
bool alternating);
141 void setDoubleRecordsKeyword(
bool double_rec);
143 std::string createDeclaration(
const std::string& indent)
const;
144 std::string createDecl()
const;
145 std::string createCode()
const;
153 std::unordered_set<std::string> m_deckNames;
154 std::unordered_set<std::string> m_validSectionNames;
155 std::string m_matchRegexString;
156 std::regex m_matchRegex;
157 std::vector< ParserRecord > m_records;
158 std::string m_Description;
159 bool raw_string_keyword =
false;
160 bool alternating_keyword =
false;
161 bool double_records =
false;
162 std::string code_end;
163 std::vector<std::string> m_requires;
164 std::vector<std::string> m_prohibits;
166 static bool validNameStart(
const std::string_view& name);
175 void initSizeKeyword(
bool table_collection,
const Json::JsonObject& sizeObject);
180 std::ostream& operator<<( std::ostream&,
const ParserKeyword& );
Definition: JsonObject.hpp:32
Definition: DeckKeyword.hpp:36
Definition: ErrorGuard.hpp:29
Definition: ParserKeyword.hpp:50
Definition: ParseContext.hpp:88
Definition: ParserKeyword.hpp:85
Definition: ParserRecord.hpp:39
Definition: UnitSystem.hpp:34
This class implements a small container which holds the transmissibility mulitpliers for all the face...
Definition: Exceptions.hpp:29