Merge pull request #47 from flikka/throw-on-too-long-records

Throw on too long records
This commit is contained in:
flikka
2013-11-11 01:20:11 -08:00
7 changed files with 146 additions and 89 deletions

View File

@@ -54,12 +54,18 @@ namespace Opm {
}
DeckRecordConstPtr ParserRecord::parse(RawRecordPtr rawRecord) const {
std::string recordBeforeParsing = rawRecord->getRecordString();
DeckRecordPtr deckRecord(new DeckRecord());
for (size_t i = 0; i < size(); i++) {
ParserItemConstPtr parserItem = get(i);
DeckItemConstPtr deckItem = parserItem->scan(rawRecord);
deckRecord->addItem(deckItem);
}
const size_t recordSize = rawRecord->size();
if (recordSize > 0)
throw std::invalid_argument("The RawRecord for keyword \"" + rawRecord->getKeywordName() + "\" in file\"" + rawRecord->getFileName() + "\" contained " +
boost::lexical_cast<std::string>(recordSize) +
" too many items according to the spec. RawRecord was: " + recordBeforeParsing);
return deckRecord;
}