cprover
locals.cpp
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Local variables
4 
5 Author: Daniel Kroening
6 
7 Date: March 2013
8 
9 \*******************************************************************/
10 
13 
14 #include "locals.h"
15 
16 #include <util/std_expr.h>
17 
18 void localst::build(const goto_functiont &goto_function)
19 {
20  forall_goto_program_instructions(it, goto_function.body)
21  if(it->is_decl())
22  {
23  const code_declt &code_decl=to_code_decl(it->code);
24  locals_map[code_decl.get_identifier()]=
25  to_symbol_expr(code_decl.symbol());
26  }
27 
28  for(const auto &param : goto_function.type.parameters())
29  locals_map[param.get_identifier()]=
30  symbol_exprt(param.get_identifier(), param.type());
31 }
32 
33 void localst::output(std::ostream &out) const
34 {
35  for(const auto &local : locals_map)
36  out << local.first << "\n";
37 }
const code_declt & to_code_decl(const codet &code)
Definition: std_code.h:291
exprt & symbol()
Definition: std_code.h:268
locals_mapt locals_map
Definition: locals.h:38
goto_programt body
Definition: goto_function.h:23
A declaration of a local variable.
Definition: std_code.h:254
API to expression classes.
const irep_idt & get_identifier() const
Definition: std_code.cpp:14
void output(std::ostream &out) const
Definition: locals.cpp:33
void build(const goto_functiont &goto_function)
Definition: locals.cpp:18
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast a generic exprt to a symbol_exprt.
Definition: std_expr.h:210
code_typet type
Definition: goto_function.h:24
const parameterst & parameters() const
Definition: std_types.h:905
Expression to hold a symbol (variable)
Definition: std_expr.h:90
Local variables whose address is taken.
#define forall_goto_program_instructions(it, program)
Definition: goto_program.h:735