Commits

Leonardo de Moura committed 5220092

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 <leonardo@microsoft.com>

Comments (0)

Files changed (4)

scripts/update_api.py

     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:

src/api/api_context.cpp

         *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();
 
        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. 

src/bindings/python/z3.py

 ...   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):