Go to the documentation of this file.
8 #define RESPONSE_ID(the_id, the_base) \
9 const irep_idt ID_smt_##the_id##_response{"smt_" #the_id "_response"};
10 #include <solvers/smt2_incremental/smt_responses.def>
20 return !(*
this == other);
23 #define RESPONSE_ID(the_id, the_base) \
25 const smt_##the_id##_responset *the_base::cast<smt_##the_id##_responset>() \
28 return id() == ID_smt_##the_id##_response \
29 ? static_cast<const smt_##the_id##_responset *>(this) \
32 #include <solvers/smt2_incremental/smt_responses.def>
35 template <
typename sub_
classt>
50 return !(*
this == other);
73 template <
typename derivedt>
77 std::is_base_of<irept, derivedt>::value &&
79 "Only irept based classes need to upcast smt_termt to store it.");
82 template <
typename derivedt>
86 return static_cast<irept &&
>(std::move(check_sat_response_kind));
89 template <
typename derivedt>
100 set(ID_value, upcast(std::move(kind)));
114 "SMT valuation pair must have matching sort for the descriptor and value.");
145 return !(*
this == other);
149 std::vector<valuation_pairt>
pairs)
155 !
pairs.empty(),
"Get value response must contain one or more pairs.");
156 for(
auto &pair :
pairs)
158 get_sub().push_back(std::move(pair));
163 std::reference_wrapper<const smt_get_value_responset::valuation_pairt>>
179 set(ID_value, message);
184 return get(ID_value);
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
smt_error_responset(irep_idt message)
Stores identifiers in unescaped and unquoted form.
const irept & find(const irep_idt &name) const
const smt_termt & descriptor() const
static irept upcast(smt_check_sat_response_kindt check_sat_response_kind)
smt_unsupported_responset()
Class for adding the ability to up and down cast smt_check_sat_response_kindt to and from irept.
const irep_idt & get(const irep_idt &name) const
bool operator!=(const smt_check_sat_response_kindt &) const
bool operator==(const valuation_pairt &) const
bool operator!=(const valuation_pairt &) const
static irept upcast(smt_termt term)
const smt_sortt & get_sort() const
smt_check_sat_responset(smt_check_sat_response_kindt kind)
static const smt_termt & downcast(const irept &)
const irep_idt & message() const
bool operator==(const irept &other) const
bool operator==(const smt_check_sat_response_kindt &) const
smt_get_value_responset(std::vector< valuation_pairt > pairs)
bool operator==(const smt_responset &) const
bool operator!=(const smt_responset &) const
There are a large number of kinds of tree structured or tree-like data in CPROVER.
const smt_termt & value() const
const sub_classt * cast() const &
ranget< iteratort > make_range(iteratort begin, iteratort end)
static const smt_check_sat_response_kindt & downcast(const irept &)
std::vector< std::reference_wrapper< const valuation_pairt > > pairs() const
const smt_check_sat_response_kindt & kind() const