mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Java API: added correct error handling.
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
This commit is contained in:
		
							parent
							
								
									e87e0991f3
								
							
						
					
					
						commit
						d13d6fecbf
					
				
					 2 changed files with 17 additions and 33 deletions
				
			
		| 
						 | 
				
			
			@ -38,12 +38,11 @@ public class Context extends IDisposable
 | 
			
		|||
        InitContext();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Context(long ctx, long refCount, Native.errorHandler errh)
 | 
			
		||||
    private Context(long ctx, long refCount)
 | 
			
		||||
    {
 | 
			
		||||
        super();
 | 
			
		||||
        this.m_ctx = ctx;
 | 
			
		||||
        this.m_refCount = refCount;
 | 
			
		||||
        this.m_n_err_handler = errh;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -2908,21 +2907,6 @@ public class Context extends IDisposable
 | 
			
		|||
        Native.toggleWarningMessages((enabled) ? true : false);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // /// <summary>
 | 
			
		||||
    // /// A delegate which is executed when an error is raised.
 | 
			
		||||
    // /// </summary>
 | 
			
		||||
    // /// <remarks>
 | 
			
		||||
    // /// Note that it is possible for memory leaks to occur if error handlers
 | 
			
		||||
    // /// throw exceptions.
 | 
			
		||||
    // /// </remarks>
 | 
			
		||||
    // public delegate void ErrorHandler(Context ctx, Z3_error_code errorCode,
 | 
			
		||||
    // String errorString);
 | 
			
		||||
 | 
			
		||||
    // /// <summary>
 | 
			
		||||
    // /// The OnError event.
 | 
			
		||||
    // /// </summary>
 | 
			
		||||
    // public event ErrorHandler OnError = null;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Update a mutable configuration parameter. <remarks> The list of all
 | 
			
		||||
     * configuration parameters can be obtained using the Z3 executable:
 | 
			
		||||
| 
						 | 
				
			
			@ -2950,26 +2934,16 @@ public class Context extends IDisposable
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    long m_ctx = 0;
 | 
			
		||||
    Native.errorHandler m_n_err_handler = null;
 | 
			
		||||
 | 
			
		||||
    long nCtx()
 | 
			
		||||
    {
 | 
			
		||||
        return m_ctx;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // void NativeErrorHandler(long ctx, Z3_error_code errorCode)
 | 
			
		||||
    // {
 | 
			
		||||
    // // Do-nothing error handler. The wrappers in Z3.Native will throw
 | 
			
		||||
    // exceptions upon errors.
 | 
			
		||||
    // }
 | 
			
		||||
 | 
			
		||||
    void InitContext() throws Z3Exception
 | 
			
		||||
    {
 | 
			
		||||
        setPrintMode(Z3_ast_print_mode.Z3_PRINT_SMTLIB2_COMPLIANT);
 | 
			
		||||
        // m_n_err_handler = new Native.errorHandler(NativeErrorHandler); //
 | 
			
		||||
        // keep reference so it doesn't get collected.
 | 
			
		||||
        // if (m_n_err_handler != null) Native.setErrorHandler(m_ctx,
 | 
			
		||||
        // m_n_err_handler);
 | 
			
		||||
	Native.setInternalErrorHandler(nCtx());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void CheckContextMatch(Z3Object other) throws Z3Exception
 | 
			
		||||
| 
						 | 
				
			
			@ -3087,7 +3061,6 @@ public class Context extends IDisposable
 | 
			
		|||
 | 
			
		||||
        if (m_refCount == 0)
 | 
			
		||||
        {
 | 
			
		||||
            m_n_err_handler = null;
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                Native.delContext(m_ctx);
 | 
			
		||||
| 
						 | 
				
			
			@ -3099,7 +3072,7 @@ public class Context extends IDisposable
 | 
			
		|||
        } else
 | 
			
		||||
            /* re-queue the finalizer */
 | 
			
		||||
            /* BUG: DRQ's need to be taken over too! */
 | 
			
		||||
            new Context(m_ctx, m_refCount, m_n_err_handler);
 | 
			
		||||
            new Context(m_ctx, m_refCount);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue