From 269522127b0c9d68b45f794d6a0963c4de4dabbe Mon Sep 17 00:00:00 2001 From: ahumenberger Date: Sat, 2 May 2020 14:14:09 +0200 Subject: [PATCH] [Julia bindings] Changes for libcxxwrap 0.7 (#4184) * First steps toward adding Julia bindings * Simplifications * Streamlining * Friends of tactic and probe * Add missing functions * Update azure-pipelines.yml for Azure Pipelines * Update azure-pipelines.yml for Azure Pipelines * Update azure-pipelines.yml for Azure Pipelines * Update azure-pipelines.yml for Azure Pipelines * Changes for CxxWrap v0.9.0 * Wrap enumeration and tuple sort * Wrap z3::fixedpoint * Wrap z3::optimize * Wrap missing functions * Fix aux types * Add some missing functions * Revert "Update azure-pipelines.yml for Azure Pipelines" This reverts commit 5aab9f9240c43ce6b3f647c1dbd2bc7d5ae9b455. * Revert "Update azure-pipelines.yml for Azure Pipelines" This reverts commit cfccd7ca2c2cff6579d04839a81d66907317a7ae. * Revert "Update azure-pipelines.yml for Azure Pipelines" This reverts commit f24740c5952adf1444b4c4de633c897e8001ad6d. * Revert "Update azure-pipelines.yml for Azure Pipelines" This reverts commit 592499eaa0719af8d5cc5b7ebcf3c5bc7231a693. * Checkout current version of pipeline * Build Julia bindings on macOS * Extract components of algebraic number * Add type to C API function name * Remove blank line * Typo in doc * Return Z3_ast_vector containing coefficients * Update Julia bindings --- azure-pipelines.yml | 2 +- src/api/julia/z3jl.cpp | 46 +++++++++++++++++++++--------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 078bec76d..60cf35dcd 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -182,7 +182,7 @@ jobs: - script: brew install ninja - script: brew cask install julia - script: | - julia -e "using Pkg; Pkg.add(PackageSpec(name=\"libcxxwrap_julia_jll\", version=\"0.6.6\"))" + julia -e "using Pkg; Pkg.add(PackageSpec(name=\"libcxxwrap_julia_jll\", version=\"0.7.0\"))" JlCxxDir=$(julia -e "using libcxxwrap_julia_jll; println(joinpath(dirname(libcxxwrap_julia_jll.libcxxwrap_julia_path), \"cmake\", \"JlCxx\"))") set -e mkdir build diff --git a/src/api/julia/z3jl.cpp b/src/api/julia/z3jl.cpp index 0877cc3cd..8cb96abec 100644 --- a/src/api/julia/z3jl.cpp +++ b/src/api/julia/z3jl.cpp @@ -97,8 +97,8 @@ JLCXX_MODULE define_julia_module(jlcxx::Module &m) TYPE_OBJ(config) .method("set", static_cast(&config::set)) - .method("set", [](config &a, char const *b, const jlcxx::StrictlyTypedNumber &c) { return a.set(b, c.value); }) - .method("set", [](config &a, char const *b, const jlcxx::StrictlyTypedNumber &c) { return a.set(b, c.value); }); + .method("set", static_cast(&config::set)) + .method("set", static_cast(&config::set)); // ------------------------------------------------------------------------- @@ -377,8 +377,8 @@ JLCXX_MODULE define_julia_module(jlcxx::Module &m) .method("set", static_cast(&solver::set)) .method("set", static_cast(&solver::set)) .method("set", static_cast(&solver::set)) - .method("set", [](solver &a, char const *b, const jlcxx::StrictlyTypedNumber &c) { return a.set(b, c.value); }) - .method("set", [](solver &a, char const *b, const jlcxx::StrictlyTypedNumber &c) { return a.set(b, c.value); }) + .method("set", static_cast(&solver::set)) + .method("set", static_cast(&solver::set)) .MM(solver, push) .MM(solver, pop) .MM(solver, reset) @@ -475,8 +475,8 @@ JLCXX_MODULE define_julia_module(jlcxx::Module &m) TYPE_OBJ(params) .constructor() - .method("set", [](params &a, char const *b, const jlcxx::StrictlyTypedNumber &c) { return a.set(b, c.value); }) - .method("set", [](params &a, char const *b, const jlcxx::StrictlyTypedNumber &c) { return a.set(b, c.value); }) + .method("set", static_cast(¶ms::set)) + .method("set", static_cast(¶ms::set)) .method("set", static_cast(¶ms::set)) .method("set", static_cast(¶ms::set)) .method("set", static_cast(¶ms::set)) @@ -591,9 +591,9 @@ JLCXX_MODULE define_julia_module(jlcxx::Module &m) // ------------------------------------------------------------------------- - m.method("set_param", [](char const *a, const jlcxx::StrictlyTypedNumber &b) { return set_param(a, b.value); }); - m.method("set_param", [](char const *a, const jlcxx::StrictlyTypedNumber &b) { return set_param(a, b.value); }); - m.method("set_param", static_cast(&set_param)); + m.method("set_param", static_cast(&set_param)); + m.method("set_param", static_cast(&set_param)); + m.method("set_param", static_cast(&set_param)); m.method("reset_params", &reset_params); // ------------------------------------------------------------------------- @@ -601,8 +601,8 @@ JLCXX_MODULE define_julia_module(jlcxx::Module &m) TYPE_OBJ(context) .constructor() .method("set", static_cast(&context::set)) - .method("set", [](context &a, char const *b, const jlcxx::StrictlyTypedNumber &c) { return a.set(b, c.value); }) - .method("set", [](context &a, char const *b, const jlcxx::StrictlyTypedNumber &c) { return a.set(b, c.value); }) + .method("set", static_cast(&context::set)) + .method("set", static_cast(&context::set)) // .MM(context, interrupt) // @@ -681,23 +681,23 @@ JLCXX_MODULE define_julia_module(jlcxx::Module &m) // .MM(context, bool_val) // - .method("int_val", [](context &a, const jlcxx::StrictlyTypedNumber &b) { return a.int_val(b.value); }) - .method("int_val", [](context &a, const jlcxx::StrictlyTypedNumber &b) { return a.int_val(b.value); }) - .method("int_val", [](context &a, const jlcxx::StrictlyTypedNumber &b) { return a.int_val(b.value); }) - .method("int_val", [](context &a, const jlcxx::StrictlyTypedNumber &b) { return a.int_val(b.value); }) + .method("int_val", [](context &a, const jlcxx::StrictlyTypedNumber b) { return a.int_val(b.value); }) + .method("int_val", [](context &a, const jlcxx::StrictlyTypedNumber b) { return a.int_val(b.value); }) + .method("int_val", [](context &a, const jlcxx::StrictlyTypedNumber b) { return a.int_val(b.value); }) + .method("int_val", [](context &a, const jlcxx::StrictlyTypedNumber b) { return a.int_val(b.value); }) .method("int_val", static_cast(&context::int_val)) // - .method("real_val", [](context &a, const jlcxx::StrictlyTypedNumber &b) { return a.real_val(b.value); }) - .method("real_val", [](context &a, const jlcxx::StrictlyTypedNumber &b) { return a.real_val(b.value); }) - .method("real_val", [](context &a, const jlcxx::StrictlyTypedNumber &b) { return a.real_val(b.value); }) - .method("real_val", [](context &a, const jlcxx::StrictlyTypedNumber &b) { return a.real_val(b.value); }) + .method("real_val", [](context &a, const jlcxx::StrictlyTypedNumber b) { return a.real_val(b.value); }) + .method("real_val", [](context &a, const jlcxx::StrictlyTypedNumber b) { return a.real_val(b.value); }) + .method("real_val", [](context &a, const jlcxx::StrictlyTypedNumber b) { return a.real_val(b.value); }) + .method("real_val", [](context &a, const jlcxx::StrictlyTypedNumber b) { return a.real_val(b.value); }) .method("real_val", static_cast(&context::real_val)) .method("real_val", static_cast(&context::real_val)) // - .method("bv_val", [](context &a, const jlcxx::StrictlyTypedNumber &b, const jlcxx::StrictlyTypedNumber &c) { return a.bv_val(b.value, c.value); }) - .method("bv_val", [](context &a, const jlcxx::StrictlyTypedNumber &b, const jlcxx::StrictlyTypedNumber &c) { return a.bv_val(b.value, c.value); }) - .method("bv_val", [](context &a, const jlcxx::StrictlyTypedNumber &b, const jlcxx::StrictlyTypedNumber &c) { return a.bv_val(b.value, c.value); }) - .method("bv_val", [](context &a, const jlcxx::StrictlyTypedNumber &b, const jlcxx::StrictlyTypedNumber &c) { return a.bv_val(b.value, c.value); }) + .method("bv_val", [](context &a, const jlcxx::StrictlyTypedNumber b, unsigned c) { return a.bv_val(b.value, c); }) + .method("bv_val", [](context &a, const jlcxx::StrictlyTypedNumber b, unsigned c) { return a.bv_val(b.value, c); }) + .method("bv_val", [](context &a, const jlcxx::StrictlyTypedNumber b, unsigned c) { return a.bv_val(b.value, c); }) + .method("bv_val", [](context &a, const jlcxx::StrictlyTypedNumber b, unsigned c) { return a.bv_val(b.value, c); }) .method("bv_val", static_cast(&context::bv_val)) .method("bv_val", static_cast(&context::bv_val)) //