Go to the documentation of this file.
23 exprt::operandst::const_iterator next_it=it;
26 if(next_it!=operands.end() && *next_it < *it)
36 std::sort(operands.begin(), operands.end());
56 { ID_plus, {ID_integer ,
65 { ID_mult, {ID_integer ,
80 { ID_bitand, {ID_unsignedbv ,
85 { ID_bitor, {ID_unsignedbv ,
90 { ID_bitxor, {ID_unsignedbv ,
125 bool no_change =
true;
144 new_ops.reserve(expr.
operands().size());
148 if(it->id()==expr.
id())
150 new_ops.reserve(new_ops.capacity()+it->operands().size()-1);
153 new_ops.push_back(*it2);
158 new_ops.push_back(*it);
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
produce canonical ordering for associative and commutative binary operators
Base class for all expressions.
const T & as_const(T &value)
Return a reference to the same object but ensures the type is const.
bool has_operands() const
Return true if there is at least one operand.
#define forall_operands(it, expr)
const irep_idt type_ids[10]
struct saj_tablet saj_table[]
const irep_idt & id() const
std::vector< exprt > operandst
static bool sort_and_join(const struct saj_tablet &saj_entry, const irep_idt &type_id)
#define forall_expr(it, expr)
bool sort_operands(exprt::operandst &operands)
sort operands of an expression according to ordering defined by operator<