28 if(expr.
id()==ID_symbol)
53 if(expr.
id()==ID_index)
57 else if(expr.
id()==ID_member)
82 return std::move(result);
106 if(subtype.
id() == ID_empty)
The type of an expression, extends irept.
Semantic type conversion.
number_type number(const key_type &a)
const std::string & id2string(const irep_idt &d)
pointer_typet pointer_type(const typet &subtype)
std::string to_string(const string_not_contains_constraintt &expr)
Used for debug printing.
The null pointer constant.
typet & type()
Return the type of the expression.
void get_dynamic_objects(std::vector< std::size_t > &objects) const
A constant literal expression.
#define CHECK_RETURN(CONDITION)
bool get_bool(const irep_namet &name) const
signedbv_typet pointer_diff_type()
exprt object_size(const exprt &pointer)
const irep_idt & id() const
Expression classes for byte-level operators.
exprt get_subexpression_at_offset(const exprt &expr, const mp_integer &offset_bytes, const typet &target_type_raw, const namespacet &ns)
optionalt< mp_integer > pointer_offset_size(const typet &type, const namespacet &ns)
Compute the size of a type in bytes, rounding up to full bytes.
The pointer type These are both 'bitvector_typet' (they have a width) and 'type_with_subtypet' (they ...
API to expression classes.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
bool is_dynamic_object(const exprt &expr) const
const member_exprt & to_member_expr(const exprt &expr)
Cast an exprt to a member_exprt.
bool has_prefix(const std::string &s, const std::string &prefix)
The plus expression Associativity is not specified.
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast an exprt to a symbol_exprt.
Operator to return the address of an object.
exprt pointer_expr(const pointert &pointer, const pointer_typet &type) const
typename data_typet::const_iterator const_iterator
static exprt conditional_cast(const exprt &expr, const typet &type)
pointer_logict(const namespacet &_ns)
Base class for all expressions.
bool is_zero() const
Return whether the expression is a constant representing 0.
const typet & subtype() const
const byte_extract_exprt & to_byte_extract_expr(const exprt &expr)
std::size_t add_object(const exprt &expr)
const index_exprt & to_index_expr(const exprt &expr)
Cast an exprt to an index_exprt.
bitvector_typet char_type()
bool simplify(exprt &expr, const namespacet &ns)
std::size_t invalid_object
irep_idt byte_extract_id()