From 9d70b53357cc3eac39eb5745ab43c2fe91f653a7 Mon Sep 17 00:00:00 2001 From: Abdul Zreika Date: Mon, 19 Oct 2020 13:46:58 +1100 Subject: [PATCH] Added interface for constraint translation that should be used. --- src/ast2ram/AstToRamTranslator.cpp | 3 ++- src/ast2ram/ConstraintTranslator.cpp | 5 +++++ src/ast2ram/ConstraintTranslator.h | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/ast2ram/AstToRamTranslator.cpp b/src/ast2ram/AstToRamTranslator.cpp index 610995e46e1..a87daf6a0fd 100644 --- a/src/ast2ram/AstToRamTranslator.cpp +++ b/src/ast2ram/AstToRamTranslator.cpp @@ -226,7 +226,8 @@ SymbolTable& AstToRamTranslator::getSymbolTable() { Own AstToRamTranslator::translateConstraint( const ast::Literal* lit, const ValueIndex& index) { - return ConstraintTranslator(*this, index)(*lit); + assert(lit != nullptr && "literal should be defined"); + return ConstraintTranslator::translate(*this, index, *lit); } RamDomain AstToRamTranslator::getConstantRamRepresentation(const ast::Constant& constant) { diff --git a/src/ast2ram/ConstraintTranslator.cpp b/src/ast2ram/ConstraintTranslator.cpp index 3553e30de08..50a71a1679a 100644 --- a/src/ast2ram/ConstraintTranslator.cpp +++ b/src/ast2ram/ConstraintTranslator.cpp @@ -28,6 +28,11 @@ namespace souffle::ast2ram { +Own ConstraintTranslator::translate( + AstToRamTranslator& translator, const ValueIndex& index, const ast::Literal& lit) { + return ConstraintTranslator(translator, index)(lit); +} + Own ConstraintTranslator::visitAtom(const ast::Atom&) { return nullptr; // covered already within the scan/lookup generation step } diff --git a/src/ast2ram/ConstraintTranslator.h b/src/ast2ram/ConstraintTranslator.h index ec9c9768574..24bbe5ddcd1 100644 --- a/src/ast2ram/ConstraintTranslator.h +++ b/src/ast2ram/ConstraintTranslator.h @@ -38,6 +38,8 @@ class ConstraintTranslator : public ast::Visitor> { ConstraintTranslator(AstToRamTranslator& translator, const ValueIndex& index) : translator(translator), index(index) {} + static Own translate(AstToRamTranslator& translator, const ValueIndex& index, const ast::Literal& lit); + /** -- Visitors -- */ Own visitAtom(const ast::Atom&) override; Own visitBinaryConstraint(const ast::BinaryConstraint& binRel) override;