45 if(it==guard_list.end())
47 else if(it==--guard_list.end())
48 return guard_list.back();
53 for(; it!=guard_list.end(); it++)
56 throw "guard is expected to be Boolean";
66 assert(expr.
type().
id()==ID_bool);
95 if(g1.
id()!=ID_and || g2.
id()!=ID_and)
105 exprt::operandst::iterator it1=op1.begin();
106 for(exprt::operandst::const_iterator
111 while(it1!=op1.end() && *it1<*it2)
113 if(it1!=op1.end() && *it1==*it2)
132 if(g1.
id()!=ID_and || g2.
id()!=ID_and)
156 n_op1.reserve(op1.size());
157 n_op2.reserve(op2.size());
159 exprt::operandst::iterator it1=op1.begin();
160 for(exprt::operandst::const_iterator
165 while(it1!=op1.end() && *it1<*it2)
167 n_op1.push_back(*it1);
170 if(it1!=op1.end() && *it1==*it2)
173 n_op2.push_back(*it2);
175 while(it1!=op1.end())
177 n_op1.push_back(*it1);
190 exprt tmp(and_expr2);
210 out <<
"*** " << it->pretty() <<
'\n';
214 #define forall_guard(it, guard_list) \ 215 for(guardt::guard_listt::const_iterator it=(guard_list).begin(); \ 216 it!=(guard_list).end(); ++it) 220 forall_guard(it, guard_list)
230 guard_list.push_back(
exprt());
The type of an expression.
friend guardt & operator-=(guardt &g1, const guardt &g2)
void guard_expr(exprt &dest) const
std::ostream & operator<<(std::ostream &out, const cfg_dominators_templatet< P, T, post_dom > &cfg_dominators)
Print the result of the dominator computation.
void copy_to_operands(const exprt &expr)
exprt conjunction(const exprt::operandst &op)
const irep_idt & id() const
The boolean constant true.
API to expression classes.
#define forall_expr_list(it, expr)
The boolean constant false.
std::vector< exprt > operandst
friend guardt & operator|=(guardt &g1, const guardt &g2)
Base class for all expressions.
static bool sort_and_join(const struct saj_tablet &saj_entry, const irep_idt &type_id)
void add(const exprt &expr)
void reserve_operands(operandst::size_type n)