mirror of
https://github.com/Z3Prover/z3
synced 2025-06-21 21:33:39 +00:00
enable binary string access to unsigned numerals over API #4568
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
2d358a9a50
commit
4a8533e41f
4 changed files with 41 additions and 1 deletions
|
@ -180,6 +180,27 @@ extern "C" {
|
|||
}
|
||||
|
||||
|
||||
Z3_string Z3_API Z3_get_numeral_binary_string(Z3_context c, Z3_ast a) {
|
||||
Z3_TRY;
|
||||
// This function invokes Z3_get_numeral_rational, but it is still ok to add LOG command here because it does not return a Z3 object.
|
||||
LOG_Z3_get_numeral_binary_string(c, a);
|
||||
RESET_ERROR_CODE();
|
||||
CHECK_IS_EXPR(a, "");
|
||||
rational r;
|
||||
bool ok = Z3_get_numeral_rational(c, a, r);
|
||||
if (ok && r.is_int() && !r.is_neg()) {
|
||||
std::stringstream strm;
|
||||
r.display_bin(strm, r.get_num_bits());
|
||||
return mk_c(c)->mk_external_string(strm.str().c_str());
|
||||
}
|
||||
else {
|
||||
SET_ERROR_CODE(Z3_INVALID_ARG, nullptr);
|
||||
return "";
|
||||
}
|
||||
Z3_CATCH_RETURN("");
|
||||
|
||||
}
|
||||
|
||||
Z3_string Z3_API Z3_get_numeral_string(Z3_context c, Z3_ast a) {
|
||||
Z3_TRY;
|
||||
// This function invokes Z3_get_numeral_rational, but it is still ok to add LOG command here because it does not return a Z3 object.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue