Go to the documentation of this file.
   14   const exprt &expression,
 
   23         type_try_dynamic_cast<pointer_typet>(sub_expression.
type()))
 
   25       const auto find_result = type_size_map.find(pointer_type->base_type());
 
   26       if(find_result != type_size_map.cend())
 
   28       exprt pointer_size_expr;
 
   34       if(is_void_pointer(*pointer_type))
 
   36         pointer_size_expr = from_integer(1, size_type());
 
   40         auto pointer_size_opt = size_of_expr(pointer_type->base_type(), ns);
 
   41         PRECONDITION(pointer_size_opt.has_value());
 
   42         pointer_size_expr = pointer_size_opt.value();
 
   45         pointer_size_expr, object_map, type_size_map, 
object_size);
 
   46       type_size_map.emplace_hint(
 
  
 
static smt_termt convert_expr_to_smt(const symbol_exprt &symbol_expr)
 
Base class for all expressions.
 
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
 
typet & type()
Return the type of the expression.
 
pointer_typet pointer_type(const typet &subtype)
 
exprt object_size(const exprt &pointer)
 
std::unordered_map< exprt, decision_procedure_objectt, irep_hash > smt_object_mapt
Mapping from an object's base expression to the set of information about it which we track.
 
const typet & base_type() const
The type of the data what we point to.
 
void visit_pre(std::function< void(exprt &)>)
 
std::unordered_map< typet, smt_termt, irep_full_hash > type_size_mapt
 
void associate_pointer_sizes(const exprt &expression, const namespacet &ns, type_size_mapt &type_size_map, const smt_object_mapt &object_map, const smt_object_sizet::make_applicationt &object_size)
This function populates the (pointer) type -> size map.