22 exprt::operandst::const_iterator next_it=it;
25 if(next_it!=operands.end() && *next_it < *it)
35 std::sort(operands.begin(), operands.end());
55 { ID_plus, {ID_integer ,
64 { ID_mult, {ID_integer ,
79 { ID_bitand, {ID_unsignedbv ,
84 { ID_bitor, {ID_unsignedbv ,
89 { ID_bitxor, {ID_unsignedbv ,
143 new_ops.reserve(expr.
operands().size());
147 if(it->id()==expr.
id())
149 new_ops.reserve(new_ops.capacity()+it->operands().size()-1);
152 new_ops.push_back(*it2);
157 new_ops.push_back(*it);
struct saj_tablet saj_table[]
#define forall_expr(it, expr)
const irep_idt & id() const
#define forall_operands(it, expr)
const irep_idt type_ids[10]
dstringt has one field, an unsigned integer no which is an index into a static table of strings...
bool has_operands() const
std::vector< exprt > operandst
Base class for all expressions.
produce canonical ordering for associative and commutative binary operators
static bool sort_and_join(const struct saj_tablet &saj_entry, const irep_idt &type_id)
bool sort_operands(exprt::operandst &operands)
sort operands of an expression according to ordering defined by operator<