Add option for input constants
This commit is contained in:
@@ -56,6 +56,7 @@ impl clingo::Logger for Logger
|
||||
|
||||
pub fn translate<P>(program_paths: &[P],
|
||||
input_predicate_declarations: foliage::PredicateDeclarations,
|
||||
input_constant_declaration_domains: crate::InputConstantDeclarationDomains,
|
||||
output_format: crate::output::Format)
|
||||
-> Result<(), crate::Error>
|
||||
where
|
||||
@@ -67,6 +68,23 @@ where
|
||||
= input_predicate_declarations.clone();
|
||||
*statement_handler.context.predicate_declarations.borrow_mut()
|
||||
= input_predicate_declarations;
|
||||
*statement_handler.context.function_declarations.borrow_mut()
|
||||
= input_constant_declaration_domains.keys().map(std::rc::Rc::clone).collect();
|
||||
*statement_handler.context.input_constant_declaration_domains.borrow_mut()
|
||||
= input_constant_declaration_domains;
|
||||
|
||||
for input_predicate_declaration in statement_handler.context.input_predicate_declarations
|
||||
.borrow().iter()
|
||||
{
|
||||
log::info!("input predicate: {}/{}", input_predicate_declaration.name,
|
||||
input_predicate_declaration.arity);
|
||||
}
|
||||
|
||||
for (input_constant_declaration, domain) in statement_handler.context
|
||||
.input_constant_declaration_domains.borrow().iter()
|
||||
{
|
||||
log::info!("input constant: {} (domain: {:?})", input_constant_declaration.name, domain);
|
||||
}
|
||||
|
||||
// Read all input programs
|
||||
for program_path in program_paths
|
||||
|
@@ -4,9 +4,6 @@ pub(crate) struct Definitions
|
||||
pub definitions: Vec<crate::ScopedFormula>,
|
||||
}
|
||||
|
||||
type InputConstantDeclarationDomains
|
||||
= std::collections::BTreeMap<std::rc::Rc<foliage::FunctionDeclaration>, crate::Domain>;
|
||||
|
||||
type VariableDeclarationDomains
|
||||
= std::collections::BTreeMap<std::rc::Rc<foliage::VariableDeclaration>, crate::Domain>;
|
||||
|
||||
@@ -19,7 +16,8 @@ pub(crate) struct Context
|
||||
std::rc::Rc<foliage::PredicateDeclaration>, Definitions>>,
|
||||
pub integrity_constraints: std::cell::RefCell<foliage::Formulas>,
|
||||
|
||||
pub input_constant_declaration_domains: std::cell::RefCell<InputConstantDeclarationDomains>,
|
||||
pub input_constant_declaration_domains: std::cell::RefCell<
|
||||
crate::InputConstantDeclarationDomains>,
|
||||
pub input_predicate_declarations: std::cell::RefCell<foliage::PredicateDeclarations>,
|
||||
|
||||
pub function_declarations: std::cell::RefCell<foliage::FunctionDeclarations>,
|
||||
@@ -40,7 +38,7 @@ impl Context
|
||||
integrity_constraints: std::cell::RefCell::new(vec![]),
|
||||
|
||||
input_constant_declaration_domains:
|
||||
std::cell::RefCell::new(InputConstantDeclarationDomains::new()),
|
||||
std::cell::RefCell::new(crate::InputConstantDeclarationDomains::new()),
|
||||
input_predicate_declarations:
|
||||
std::cell::RefCell::new(foliage::PredicateDeclarations::new()),
|
||||
|
||||
|
Reference in New Issue
Block a user