3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-19 20:33:38 +00:00

avoid a few str copies + symbol hiding

This commit is contained in:
Nuno Lopes 2019-03-08 10:13:46 +00:00
parent 70ada9919e
commit cd4b53500c
13 changed files with 22 additions and 33 deletions

View file

@ -48,7 +48,7 @@ extern "C" {
env_params::updt_params();
}
std::string g_Z3_global_param_get_buffer;
static std::string g_Z3_global_param_get_buffer;
Z3_bool_opt Z3_API Z3_global_param_get(Z3_string param_id, Z3_string_ptr param_value) {
memory::initialize(UINT_MAX);

View file

@ -155,8 +155,6 @@ namespace api {
m_error_code = Z3_OK;
}
void context::check_searching() {
if (m_searching) {
set_error_code(Z3_INVALID_USAGE, "cannot use function while searching"); // TBD: error code could be fixed.
@ -168,8 +166,8 @@ namespace api {
return const_cast<char *>(m_string_buffer.c_str());
}
char * context::mk_external_string(std::string const & str) {
m_string_buffer = str;
char * context::mk_external_string(std::string && str) {
m_string_buffer = std::move(str);
return const_cast<char *>(m_string_buffer.c_str());
}
@ -466,17 +464,11 @@ extern "C" {
}
}
Z3_API char const * Z3_get_error_msg(Z3_context c, Z3_error_code err) {
LOG_Z3_get_error_msg(c, err);
return _get_error_msg(c, err);
}
Z3_API char const * Z3_get_error_msg_ex(Z3_context c, Z3_error_code err) {
return Z3_get_error_msg(c, err);
}
void Z3_API Z3_set_ast_print_mode(Z3_context c, Z3_ast_print_mode mode) {
Z3_TRY;
LOG_Z3_set_ast_print_mode(c, mode);

View file

@ -179,7 +179,7 @@ namespace api {
// Store a copy of str in m_string_buffer, and return a reference to it.
// This method is used to communicate local/internal strings with the "external world"
char * mk_external_string(char const * str);
char * mk_external_string(std::string const & str);
char * mk_external_string(std::string && str);
// Create a numeral of the given sort
expr * mk_numeral_core(rational const & n, sort * s);

View file

@ -189,7 +189,7 @@ extern "C" {
std::string result = buffer.str();
SASSERT(result.size() > 0);
result.resize(result.size()-1);
return mk_c(c)->mk_external_string(result);
return mk_c(c)->mk_external_string(std::move(result));
Z3_CATCH_RETURN("");
}
@ -207,7 +207,7 @@ extern "C" {
std::string result = buffer.str();
SASSERT(result.size() > 0);
result.resize(result.size()-1);
return mk_c(c)->mk_external_string(result);
return mk_c(c)->mk_external_string(std::move(result));
Z3_CATCH_RETURN("");
}

View file

@ -478,7 +478,7 @@ extern "C" {
model_v2_pp(buffer, *(to_model_ref(m)), p.partial());
result = buffer.str();
}
return mk_c(c)->mk_external_string(result);
return mk_c(c)->mk_external_string(std::move(result));
Z3_CATCH_RETURN(nullptr);
}

View file

@ -106,8 +106,7 @@ extern "C" {
SET_ERROR_CODE(Z3_INVALID_ARG, "expression is not a string literal");
return "";
}
std::string s = str.encode();
return mk_c(c)->mk_external_string(s);
return mk_c(c)->mk_external_string(str.encode());
Z3_CATCH_RETURN("");
}

View file

@ -34,7 +34,7 @@ extern "C" {
result = buffer.str();
SASSERT(result.size() > 0);
result.resize(result.size()-1);
return mk_c(c)->mk_external_string(result);
return mk_c(c)->mk_external_string(std::move(result));
Z3_CATCH_RETURN("");
}