From 5220092f0cb1c36e0d0c67017e7c8818ab202193 Mon Sep 17 00:00:00 2001 From: Leonardo de Moura Date: Mon, 29 Oct 2012 17:23:45 -0700 Subject: [PATCH] added Z3_enable_trace/Z3_disable_trace to the Z3 API (these APIs are NOOPs if tracing is not enabled during compilation) Signed-off-by: Leonardo de Moura --- scripts/update_api.py | 1 + src/api/api_context.cpp | 10 ++++++++++ src/api/z3_api.h | 20 ++++++++++++++++---- src/bindings/python/z3.py | 7 ++++++- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/scripts/update_api.py b/scripts/update_api.py index a9c169e58..37c327715 100644 --- a/scripts/update_api.py +++ b/scripts/update_api.py @@ -650,6 +650,7 @@ def def_APIs(): for api_file in API_FILES: api = open(api_file, 'r') for line in api: + line = line.strip('\r\n\t ') try: m = pat1.match(line) if m: diff --git a/src/api/api_context.cpp b/src/api/api_context.cpp index 0da0186a0..c80b55fd9 100644 --- a/src/api/api_context.cpp +++ b/src/api/api_context.cpp @@ -491,6 +491,16 @@ extern "C" { *revision_number = Z3_REVISION_NUMBER; } + void Z3_API Z3_enable_trace(Z3_string tag) { + LOG_Z3_enable_trace(tag); + enable_trace(tag); + } + + void Z3_API Z3_disable_trace(Z3_string tag) { + LOG_Z3_disable_trace(tag); + disable_trace(tag); + } + void Z3_API Z3_reset_memory(void) { LOG_Z3_reset_memory(); memory::finalize(); diff --git a/src/api/z3_api.h b/src/api/z3_api.h index 9e3c73ac3..fe4aa8301 100644 --- a/src/api/z3_api.h +++ b/src/api/z3_api.h @@ -5057,12 +5057,24 @@ END_MLAPI_EXCLUDE def_API('Z3_get_version', VOID, (_out(UINT), _out(UINT), _out(UINT), _out(UINT))) */ - void Z3_API Z3_get_version(__out unsigned * major, - __out unsigned * minor, - __out unsigned * build_number, - __out unsigned * revision_number); + void Z3_API Z3_get_version(__out unsigned * major, __out unsigned * minor, __out unsigned * build_number, __out unsigned * revision_number); + + /** + \brief Enable tracing messages tagged as \c tag when Z3 is compiled in debug mode. + It is a NOOP otherwise + def_API('Z3_enable_trace', VOID, (_in(STRING),)) + */ + void Z3_API Z3_enable_trace(__in Z3_string tag); + /** + \brief Disable tracing messages tagged as \c tag when Z3 is compiled in debug mode. + It is a NOOP otherwise + + def_API('Z3_disable_trace', VOID, (_in(STRING),)) + */ + void Z3_API Z3_disable_trace(__in Z3_string tag); + #ifdef CorML3 /** \brief Reset all allocated resources. diff --git a/src/bindings/python/z3.py b/src/bindings/python/z3.py index 4d041fa6b..0a1eec722 100644 --- a/src/bindings/python/z3.py +++ b/src/bindings/python/z3.py @@ -37,13 +37,18 @@ Z3 exceptions: ... print "failed:", ex failed: 'sort mismatch' """ - from z3core import * from z3types import * from z3consts import * from z3printer import * import io +def enable_trace(msg): + Z3_enable_trace(msg) + +def disable_trace(msg): + Z3_disable_trace(msg) + # We use _z3_assert instead of the assert command because we want to # produce nice error messages in Z3Py at rise4fun.com def _z3_assert(cond, msg):