8 #define RESPONSE_ID(the_id, the_base) \
9 const irep_idt ID_smt_##the_id##_response{"smt_" #the_id "_response"};
10 #include "smt_responses.def"
21 return !(*
this == other);
24 #define RESPONSE_ID(the_id, the_base) \
26 const smt_##the_id##_responset *the_base::cast<smt_##the_id##_responset>() \
29 return id() == ID_smt_##the_id##_response \
30 ? static_cast<const smt_##the_id##_responset *>(this) \
33 #include "smt_responses.def"
36 template <
typename sub_
classt>
51 return !(*
this == other);
74 template <
typename derivedt>
78 std::is_base_of<irept, derivedt>::value &&
80 "Only irept based classes need to upcast smt_termt to store it.");
83 template <
typename derivedt>
87 return static_cast<irept &&
>(std::move(check_sat_response_kind));
90 template <
typename derivedt>
115 "SMT valuation pair must have matching sort for the descriptor and value.");
146 return !(*
this == other);
150 std::vector<valuation_pairt>
pairs)
156 !
pairs.empty(),
"Get value response must contain one or more pairs.");
157 for(
auto &pair :
pairs)
159 get_sub().push_back(std::move(pair));
164 std::reference_wrapper<const smt_get_value_responset::valuation_pairt>>
185 return get(ID_value);
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
There are a large number of kinds of tree structured or tree-like data in CPROVER.
bool operator==(const irept &other) const
const irept & find(const irep_idt &name) const
const irep_idt & get(const irep_idt &name) const
void set(const irep_idt &name, const irep_idt &value)
Class for adding the ability to up and down cast smt_check_sat_response_kindt to and from irept.
static irept upcast(smt_check_sat_response_kindt check_sat_response_kind)
static const smt_check_sat_response_kindt & downcast(const irept &)
bool operator==(const smt_check_sat_response_kindt &) const
bool operator!=(const smt_check_sat_response_kindt &) const
smt_check_sat_responset(smt_check_sat_response_kindt kind)
const smt_check_sat_response_kindt & kind() const
const irep_idt & message() const
smt_error_responset(irep_idt message)
const smt_termt & descriptor() const
bool operator==(const valuation_pairt &) const
const smt_termt & value() const
bool operator!=(const valuation_pairt &) const
smt_get_value_responset(std::vector< valuation_pairt > pairs)
std::vector< std::reference_wrapper< const valuation_pairt > > pairs() const
Stores identifiers in unescaped and unquoted form.
const sub_classt * cast() const &
bool operator!=(const smt_responset &) const
bool operator==(const smt_responset &) const
static irept upcast(smt_termt term)
static const smt_termt & downcast(const irept &)
const smt_sortt & get_sort() const
smt_unsupported_responset()
Ranges: pair of begin and end iterators, which can be initialized from containers,...
ranget< iteratort > make_range(iteratort begin, iteratort end)