3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-07 14:43:23 +00:00

add initialization

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-06-11 19:28:08 -07:00
parent 583098b8b0
commit 71c38a08e5
13 changed files with 92 additions and 43 deletions

View file

@ -21,7 +21,7 @@ Notes:
#include "util/trace.h"
#include "util/mutex.h"
static mutex gparams_mux;
static mutex* s_mux = nullptr;
extern void gparams_register_modules();
@ -113,7 +113,7 @@ public:
}
void reset() {
lock_guard lock(gparams_mux);
lock_guard lock(*s_mux);
m_params.reset();
for (auto & kv : m_module_params) {
dealloc(kv.m_value);
@ -329,7 +329,7 @@ public:
bool error = false;
std::string error_msg;
{
lock_guard lock(gparams_mux);
lock_guard lock(*s_mux);
try {
symbol m, p;
normalize(name, m, p);
@ -381,7 +381,7 @@ public:
bool error = false;
std::string error_msg;
{
lock_guard lock(gparams_mux);
lock_guard lock(*s_mux);
try {
symbol m, p;
normalize(name, m, p);
@ -428,7 +428,7 @@ public:
params_ref result;
params_ref * ps = nullptr;
{
lock_guard lock(gparams_mux);
lock_guard lock(*s_mux);
if (m_module_params.find(module_name, ps)) {
result.copy(*ps);
}
@ -448,7 +448,7 @@ public:
void display(std::ostream & out, unsigned indent, bool smt2_style, bool include_descr) {
{
lock_guard lock(gparams_mux);
lock_guard lock(*s_mux);
out << "Global parameters\n";
get_param_descrs().display(out, indent + 4, smt2_style, include_descr);
out << "\n";
@ -470,7 +470,7 @@ public:
}
void display_modules(std::ostream & out) {
lock_guard lock(gparams_mux);
lock_guard lock(*s_mux);
for (auto & kv : get_module_param_descrs()) {
out << "[module] " << kv.m_key;
char const * descr = nullptr;
@ -484,7 +484,7 @@ public:
void display_module(std::ostream & out, symbol const & module_name) {
bool error = false;
std::string error_msg;
lock_guard lock(gparams_mux);
lock_guard lock(*s_mux);
try {
param_descrs * d = nullptr;
if (!get_module_param_descrs().find(module_name, d)) {
@ -513,7 +513,7 @@ public:
bool error = false;
std::string error_msg;
{
lock_guard lock(gparams_mux);
lock_guard lock(*s_mux);
try {
symbol m, p;
normalize(name, m, p);
@ -631,15 +631,16 @@ void gparams::display_parameter(std::ostream & out, char const * name) {
void gparams::init() {
TRACE("gparams", tout << "gparams::init()\n";);
s_mux = alloc(mutex);
g_imp = alloc(imp);
}
void gparams::finalize() {
TRACE("gparams", tout << "gparams::finalize()\n";);
if (g_imp != nullptr) {
dealloc(g_imp);
g_imp = nullptr;
}
dealloc(g_imp);
g_imp = nullptr;
dealloc(s_mux);
s_mux = nullptr;
}