#pragma once
#include <memory>
#include <stdexcept>
#include <string>
#include "rust/cxx.h"
#include "include/c_errors.h"
struct api_sessiont;
struct verification_resultt;
enum class verifier_resultt;
enum class prop_statust;
std::vector<std::string> const &
_translate_vector_of_string(rust::Vec<rust::String> elements);
std::unique_ptr<api_sessiont> new_api_session();
std::vector<std::string> const &get_messages();
verifier_resultt
get_verification_result(const std::unique_ptr<verification_resultt> &v);
std::vector<std::string> const &
get_property_ids(const std::unique_ptr<verification_resultt> &);
std::string const &get_property_description(
const std::unique_ptr<verification_resultt> &,
const std::string &);
prop_statust get_property_status(
const std::unique_ptr<verification_resultt> &,
const std::string &);
namespace rust
{
namespace behavior
{
template <typename Try, typename Fail>
static void trycatch(Try &&func, Fail &&fail) noexcept
{
try
{
func();
}
catch(const cprover_exception_baset &e)
{
fail(e.what());
}
catch(const invariant_failedt &i)
{
fail(i.what());
}
catch(const std::out_of_range &our)
{
fail(our.what());
}
catch(const std::exception &exc)
{
fail(exc.what());
}
}
}
}