/*++
Copyright (c) 2012 Microsoft Corporation

Module Name:

    tactic_exception.h

Abstract:

    Tactic exception object.

Author:

    Leonardo (leonardo) 2012-08-15

Notes:

--*/
#pragma once

#include "util/z3_exception.h"
#include "util/common_msgs.h"

class tactic_exception : public z3_exception {
protected:
    std::string m_msg;
public:
    tactic_exception(std::string && msg) : m_msg(std::move(msg)) {}
    char const * msg() const override { return m_msg.c_str(); }
};

#define TACTIC_CANCELED_MSG      Z3_CANCELED_MSG
#define TACTIC_MAX_MEMORY_MSG    Z3_MAX_MEMORY_MSG
#define TACTIC_MAX_SCOPES_MSG    Z3_MAX_SCOPES_MSG
#define TACTIC_MAX_STEPS_MSG     Z3_MAX_STEPS_MSG
#define TACTIC_MAX_FRAMES_MSG    Z3_MAX_FRAMES_MSG
#define TACTIC_NO_PROOF_GEN_MSG  Z3_NO_PROOF_GEN_MSG

