diff --git a/src/ast2ram/AstToRamTranslator.cpp b/src/ast2ram/AstToRamTranslator.cpp index fe2e31254fd..3a9301ab015 100644 --- a/src/ast2ram/AstToRamTranslator.cpp +++ b/src/ast2ram/AstToRamTranslator.cpp @@ -150,20 +150,20 @@ size_t AstToRamTranslator::getEvaluationArity(const ast::Atom* atom) const { std::vector> AstToRamTranslator::getInputDirectives( const ast::Relation* rel) { std::vector> inputDirectives; - - for (const auto* load : program->getDirectives()) { - if (load->getQualifiedName() != rel->getQualifiedName() || - load->getType() != ast::DirectiveType::input) { + for (const auto* load : getDirectives(*program, rel->getQualifiedName())) { + // must be a load + if (load->getType() != ast::DirectiveType::input) { continue; } std::map directives; - for (const auto& currentPair : load->getParameters()) { - directives.insert(std::make_pair(currentPair.first, unescape(currentPair.second))); + for (const auto& [key, value] : load->getParameters()) { + directives.insert(std::make_pair(key, unescape(value))); } inputDirectives.push_back(directives); } + // add an empty directive if none exist if (inputDirectives.empty()) { inputDirectives.emplace_back(); } @@ -174,21 +174,21 @@ std::vector> AstToRamTranslator::getInputDire std::vector> AstToRamTranslator::getOutputDirectives( const ast::Relation* rel) { std::vector> outputDirectives; - - for (const auto* store : program->getDirectives()) { - if (store->getQualifiedName() != rel->getQualifiedName() || - (store->getType() != ast::DirectiveType::printsize && - store->getType() != ast::DirectiveType::output)) { + for (const auto* store : getDirectives(*program, rel->getQualifiedName())) { + // must be either printsize or output + if (store->getType() != ast::DirectiveType::printsize && + store->getType() != ast::DirectiveType::output) { continue; } std::map directives; - for (const auto& currentPair : store->getParameters()) { - directives.insert(std::make_pair(currentPair.first, unescape(currentPair.second))); + for (const auto& [key, value] : store->getParameters()) { + directives.insert(std::make_pair(key, unescape(value))); } outputDirectives.push_back(directives); } + // add an empty directive if none exist if (outputDirectives.empty()) { outputDirectives.emplace_back(); }