Go to the documentation of this file.
9 #ifndef CPROVER_JAVA_BYTECODE_CODE_WITH_REFERENCES_H
10 #define CPROVER_JAVA_BYTECODE_CODE_WITH_REFERENCES_H
19 const exprt &array_length_expr,
95 std::list<std::shared_ptr<code_with_referencest>>
list;
108 #endif // CPROVER_JAVA_BYTECODE_CODE_WITH_REFERENCES_H
void add(code_without_referencest code)
A codet representing sequential composition of program statements.
virtual code_blockt to_code(reference_substitutiont &) const =0
Base class for code which can contain references which can get replaced before generating actual code...
std::function< const object_creation_referencet &(const std::string &)> reference_substitutiont
Base class for all expressions.
void add_to_front(code_without_referencest code)
exprt expr
Expression for the symbol that stores the value that may be reference equal to other values.
Code that should not contain reference.
Allocation code which contains a reference.
reference_allocationt(std::string reference_id, source_locationt loc)
Information to store when several references point to the same Java object.
code_blockt to_code(reference_substitutiont &) const override
nonstd::optional< T > optionalt
optionalt< exprt > array_length
If symbol is an array, this expression stores its length.
void append(code_with_references_listt &&other)
Wrapper around a list of shared pointer to code_with_referencest objects, which provides a nicer inte...
virtual ~code_with_referencest()=default
std::list< std::shared_ptr< code_with_referencest > > list
code_without_referencest(codet code)
codet allocate_array(const exprt &expr, const exprt &array_length_expr, const source_locationt &loc)
Allocate a fresh array of length array_length_expr and assigns expr to it.
code_blockt to_code(reference_substitutiont &references) const override
Data structure for representing an arbitrary statement in a program.