Restructure createRawKeyword.
Restructures createRawKeyword to use multiple return statements over if-else and updating variables, reducing indentation to have fewer contemporary branches.
This commit is contained in:
@@ -448,39 +448,48 @@ bool Parser::parseState(std::shared_ptr<ParserState> parserState) const {
|
||||
|
||||
const auto* parserKeyword = getParserKeywordFromDeckName( keywordString );
|
||||
|
||||
if (parserKeyword->getSizeType() == SLASH_TERMINATED || parserKeyword->getSizeType() == UNKNOWN) {
|
||||
Raw::KeywordSizeEnum rawSizeType;
|
||||
if (parserKeyword->getSizeType() == SLASH_TERMINATED)
|
||||
rawSizeType = Raw::SLASH_TERMINATED;
|
||||
else
|
||||
rawSizeType = Raw::UNKNOWN;
|
||||
if( parserKeyword->getSizeType() == SLASH_TERMINATED || parserKeyword->getSizeType() == UNKNOWN) {
|
||||
|
||||
return RawKeywordPtr(new RawKeyword(keywordString , rawSizeType , parserState->dataFile.string(), parserState->lineNR));
|
||||
} else {
|
||||
size_t targetSize;
|
||||
const auto rawSizeType = parserKeyword->getSizeType() == SLASH_TERMINATED
|
||||
? Raw::SLASH_TERMINATED
|
||||
: Raw::UNKNOWN;
|
||||
|
||||
if (parserKeyword->hasFixedSize())
|
||||
targetSize = parserKeyword->getFixedSize();
|
||||
else {
|
||||
const std::pair<std::string, std::string> sizeKeyword = parserKeyword->getSizeDefinitionPair();
|
||||
const Deck * deck = parserState->deck;
|
||||
if (deck->hasKeyword(sizeKeyword.first)) {
|
||||
const auto& sizeDefinitionKeyword = deck->getKeyword(sizeKeyword.first);
|
||||
const auto& record = sizeDefinitionKeyword.getRecord(0);
|
||||
targetSize = record.getItem( sizeKeyword.second ).get< int >( 0 );
|
||||
} else {
|
||||
std::string msg = "Expected the kewyord: " + sizeKeyword.first + " to infer the number of records in: " + keywordString;
|
||||
parserState->parseContext.handleError(ParseContext::PARSE_MISSING_DIMS_KEYWORD , msg );
|
||||
|
||||
auto keyword = getKeyword( sizeKeyword.first );
|
||||
auto record = keyword->getRecord(0);
|
||||
auto int_item = std::dynamic_pointer_cast<const ParserIntItem>( record->get( sizeKeyword.second ) );
|
||||
|
||||
targetSize = int_item->getDefault( );
|
||||
}
|
||||
}
|
||||
return RawKeywordPtr(new RawKeyword(keywordString, parserState->dataFile.string() , parserState->lineNR , targetSize , parserKeyword->isTableCollection()));
|
||||
return std::make_shared< RawKeyword >( keywordString, rawSizeType,
|
||||
parserState->dataFile.string(),
|
||||
parserState->lineNR );
|
||||
}
|
||||
|
||||
if( parserKeyword->hasFixedSize() ) {
|
||||
return std::make_shared< RawKeyword >( keywordString, parserState->dataFile.string(),
|
||||
parserState->lineNR, parserKeyword->getFixedSize(),
|
||||
parserKeyword->isTableCollection() );
|
||||
}
|
||||
|
||||
const auto& sizeKeyword = parserKeyword->getSizeDefinitionPair();
|
||||
const auto* deck = parserState->deck;
|
||||
|
||||
if( deck->hasKeyword(sizeKeyword.first ) ) {
|
||||
const auto& sizeDefinitionKeyword = deck->getKeyword(sizeKeyword.first);
|
||||
const auto& record = sizeDefinitionKeyword.getRecord(0);
|
||||
const auto targetSize = record.getItem( sizeKeyword.second ).get< int >( 0 );
|
||||
return std::make_shared< RawKeyword >( keywordString, parserState->dataFile.string(),
|
||||
parserState->lineNR, targetSize,
|
||||
parserKeyword->isTableCollection() );
|
||||
}
|
||||
|
||||
std::string msg = "Expected the kewyord: " + sizeKeyword.first
|
||||
+ " to infer the number of records in: " + keywordString;
|
||||
|
||||
parserState->parseContext.handleError(ParseContext::PARSE_MISSING_DIMS_KEYWORD , msg );
|
||||
|
||||
const auto* keyword = getKeyword( sizeKeyword.first );
|
||||
const auto record = keyword->getRecord(0);
|
||||
const auto int_item = std::dynamic_pointer_cast<const ParserIntItem>( record->get( sizeKeyword.second ) );
|
||||
|
||||
const auto targetSize = int_item->getDefault( );
|
||||
return std::make_shared< RawKeyword >( keywordString, parserState->dataFile.string(),
|
||||
parserState->lineNR, targetSize,
|
||||
parserKeyword->isTableCollection() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user