31  std::vector<codet> statements;
 
 
   47const std::vector<codet>
 
   72  const std::vector<codet> &statements,
 
   80  for(
const auto &assignment : statements)
 
   82    if(assignment.get_statement() == 
ID_assign)
 
   99            member_expr.get_component_name() == component_name &&
 
  139            member_expr.get_component_name() == component_name &&
 
 
  169  const std::vector<codet> &statements,
 
  174  for(
const auto &assignment : statements)
 
  176    if(assignment.get_statement() == 
ID_assign)
 
  184          member_expr.get_component_name() == component_name &&
 
 
  221  const std::vector<codet> &instructions)
 
  228    std::regex(
"^" + 
sanitized + 
"$"), instructions);
 
 
  234  const std::vector<codet> &instructions)
 
  239  for(
const codet &statement : instructions)
 
  241    if(statement.get_statement() == 
ID_assign)
 
 
  291    if(statement.get_statement() == 
ID_decl)
 
 
  316  REQUIRE(assignments.size() == 1);
 
  317  return assignments[0].rhs();
 
 
  405    "looking for component assignment " << component_name << 
" in " 
  426  const typet &component_type =
 
 
  550  const std::vector<codet> &statements,
 
  553  std::vector<code_function_callt> function_calls;
 
  554  for(
const codet &statement : statements)
 
  567          function_calls.push_back(function_call);
 
  572  return function_calls;
 
 
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
 
A goto_instruction_codet representing an assignment in the program.
 
A goto_instruction_codet representing the declaration of a local variable.
 
goto_instruction_codet representation of a function call statement.
 
Data structure for representing an arbitrary statement in a program.
 
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
 
Base class for all expressions.
 
static irep_idt entry_point()
Get the identifier of the entry point to a goto model.
 
const irep_idt & get(const irep_idt &name) const
 
const irep_idt & id() const
 
Extract member of struct or union.
 
const union_typet & follow_tag(const union_tag_typet &) const
Follow type tag of union type.
 
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
 
The null pointer constant.
 
Split an expression into a base object and a (byte) offset.
 
Expression to hold a symbol (variable)
 
const irep_idt & get_identifier() const
 
The symbol table base class interface.
 
const symbolt * lookup(const irep_idt &name) const
Find a symbol in the symbol table for read-only access.
 
The type of an expression, extends irept.
 
Forward depth-first search iterators These iterators' copy operations are expensive,...
 
const exprt & skip_typecast(const exprt &expr)
find the expression nested inside typecasts, if any
 
Deprecated expression utility functions.
 
Goto Programs with Functions.
 
const code_function_callt & to_code_function_call(const goto_instruction_codet &code)
 
const code_assignt & to_code_assign(const goto_instruction_codet &code)
 
const code_declt & to_code_decl(const goto_instruction_codet &code)
 
const std::string & id2string(const irep_idt &d)
 
bool is_java_array_tag(const irep_idt &tag)
See above.
 
irep_idt require_entry_point_argument_assignment(const irep_idt &argument_name, const std::vector< codet > &entry_point_statements)
Checks that the input argument (of method under test) with given name is assigned a single non-null o...
 
std::vector< code_function_callt > find_function_calls(const std::vector< codet > &statements, const irep_idt &function_call_identifier)
Verify that a collection of statements contains a function call to a function whose symbol identifier...
 
std::vector< codet > get_all_statements(const exprt &function_value)
Expand value of a function to include all child codets.
 
pointer_assignment_locationt find_struct_component_assignments(const std::vector< codet > &statements, const irep_idt &structure_name, const std::optional< irep_idt > &superclass_name, const irep_idt &component_name, const symbol_table_baset &symbol_table)
Find assignment statements of the form:
 
pointer_assignment_locationt find_pointer_assignments(const irep_idt &pointer_name, const std::vector< codet > &instructions)
For a given variable name, gets the assignments to it in the provided instructions.
 
const std::vector< codet > require_entry_point_statements(const symbol_table_baset &symbol_table)
 
pointer_assignment_locationt find_this_component_assignment(const std::vector< codet > &statements, const irep_idt &component_name)
Find assignment statements that set this->{component_name}.
 
irep_idt require_struct_component_assignment(const irep_idt &structure_name, const std::optional< irep_idt > &superclass_name, const irep_idt &component_name, const irep_idt &component_type_name, const std::optional< irep_idt > &typecast_name, const std::vector< codet > &entry_point_instructions, const symbol_table_baset &symbol_table)
Checks that the component of the structure (possibly inherited from the superclass) is assigned an ob...
 
const code_declt & require_declaration_of_name(const irep_idt &variable_name, const std::vector< codet > &entry_point_instructions)
Find the declaration of the specific variable.
 
const irep_idt & require_struct_array_component_assignment(const irep_idt &structure_name, const std::optional< irep_idt > &superclass_name, const irep_idt &array_component_name, const irep_idt &array_type_name, const std::vector< codet > &entry_point_instructions, const symbol_table_baset &symbol_table)
Checks that the array component of the structure (possibly inherited from the superclass) is assigned...
 
API to expression classes for Pointers.
 
const pointer_typet & to_pointer_type(const typet &type)
Cast a typet to a pointer_typet.
 
const dereference_exprt & to_dereference_expr(const exprt &expr)
Cast an exprt to a dereference_exprt.
 
const exprt & get_unique_non_null_expression_assigned_to_symbol(const std::vector< codet > &entry_point_instructions, const irep_idt &symbol_identifier)
Get the unique non-null expression assigned to a symbol.
 
const symbol_exprt * try_get_unique_symbol_assigned_to_symbol(const std::vector< codet > &entry_point_instructions, const irep_idt &symbol_identifier)
Get the unique symbol assigned to a symbol, if one exists.
 
static const irep_idt & get_ultimate_source_symbol(const std::vector< codet > &entry_point_instructions, const irep_idt &input_symbol_identifier)
Follow the chain of non-null assignments until we find a symbol that hasn't ever had another symbol a...
 
Utilties for inspecting goto functions.
 
#define PRECONDITION(CONDITION)
 
side_effect_exprt & to_side_effect_expr(exprt &expr)
 
const codet & to_code(const exprt &expr)
 
const typecast_exprt & to_typecast_expr(const exprt &expr)
Cast an exprt to a typecast_exprt.
 
const member_exprt & to_member_expr(const exprt &expr)
Cast an exprt to a member_exprt.
 
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast an exprt to a symbol_exprt.
 
const struct_tag_typet & to_struct_tag_type(const typet &type)
Cast a typet to a struct_tag_typet.
 
std::vector< code_assignt > non_null_assignments
 
bool has_suffix(const std::string &s, const std::string &suffix)