37 const exprt &
function,
44 new_function=
function;
54 if(new_function.id()==ID_symbol &&
57 new_arguments.clear();
65 if(new_function.id()==ID_if)
69 else if(new_function.id()==ID_symbol)
74 else if(new_function.id()==
"NULL-object")
77 else if(new_function.id()==ID_dereference ||
78 new_function.id()==
"virtual_function")
85 error() <<
"unexpected function argument: " << new_function.id()
133 v->guard=
function.cond();
135 v->source_location=
function.cond().source_location();
157 const exprt &
function,
166 function_call.
lhs()=lhs;
170 t->source_location=
function.source_location();
171 t->code.swap(function_call);
targett add_instruction()
Adds an instruction at the end.
virtual void do_function_call(const exprt &lhs, const exprt &function, const exprt::operandst &arguments, goto_programt &dest)
instructionst instructions
The list of instructions in the goto program.
const irep_idt & get_identifier() const
virtual void do_function_call_symbol(const exprt &lhs, const symbol_exprt &function, const exprt::operandst &arguments, goto_programt &dest)
add function calls to function queue for later processing
The trinary if-then-else operator.
static mstreamt & eom(mstreamt &m)
#define Forall_expr(it, expr)
const if_exprt & to_if_expr(const exprt &expr)
Cast a generic exprt to an if_exprt.
source_locationt source_location
API to expression classes.
void clean_expr(exprt &expr, goto_programt &dest, bool result_is_used=true)
virtual void do_function_call_other(const exprt &lhs, const exprt &function, const exprt::operandst &arguments, goto_programt &dest)
std::vector< exprt > operandst
void convert_function_call(const code_function_callt &code, goto_programt &dest)
A specialization of goto_program_templatet over goto programs in which instructions have codet type...
virtual void do_function_call_if(const exprt &lhs, const if_exprt &function, const exprt::operandst &arguments, goto_programt &dest)
Base class for all expressions.
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast a generic exprt to a symbol_exprt.
source_locationt & add_source_location()
void destructive_append(goto_program_templatet< codeT, guardT > &p)
Appends the given program, which is destroyed.
instructionst::iterator targett