39 typedef std::list<value_set_fivrt::entryt> entry_listt;
50 typedef std::unordered_map<irep_idt, entry_listt> entry_cachet;
51 entry_cachet entry_cache;
59 entry_cachet::const_iterator e_it=entry_cache.find(l);
61 if(e_it==entry_cache.end())
65 std::list<value_set_fivrt::entryt> &entries=entry_cache[l];
76 std::list<value_set_fivrt::entryt> &dest)
83 const std::string &suffix,
85 std::list<value_set_fivrt::entryt> &dest)
89 if(t.
id()==ID_struct ||
95 identifier, suffix +
"." +
id2string(c.get_name()), c.type(), dest);
98 else if(t.
id()==ID_array)
112 std::list<value_set_fivrt::entryt> globals;
121 std::set<irep_idt> locals;
128 std::list<value_set_fivrt::entryt> entries;
136 std::list<value_set_fivrt::entryt> &dest)
141 if(it.second.is_lvalue && it.second.is_static_lifetime)
150 if(type.
id()==ID_pointer)
155 {
return true;
break; }
158 if(type.
id()==ID_pointer)
160 const typet *t = &type;
161 while(t->
id()==ID_pointer) t = &(t->
subtype());
163 return (t->
id()==ID_code);
172 else if(type.
id()==ID_struct ||
179 else if(type.
id()==ID_array)
181 else if(type.
id() == ID_symbol_type)
The type of an expression, extends irept.
irep_idt name
The unique identifier.
virtual void initialize(const goto_programt &goto_program)
const std::string & id2string(const irep_idt &d)
void get_entries_rec(const irep_idt &identifier, const std::string &suffix, const typet &type, std::list< value_set_fivrt::entryt > &dest)
void get_local_identifiers(const goto_functiont &goto_function, std::set< irep_idt > &dest)
Return in dest the identifiers of the local variables declared in the goto_function and the identifie...
const componentst & components() const
value_set_fivrt value_set
void add_vars(const goto_functionst &goto_functions)
bool check_type(const typet &type)
std::set< irep_idt > decl_identifierst
const irep_idt & id() const
const symbol_table_baset & get_symbol_table() const
Return first symbol table registered with the namespace.
A collection of goto functions.
void add_vars(const std::list< entryt > &vars)
const typet & follow(const typet &) const
Resolve type symbol to the type it points to.
dstringt has one field, an unsigned integer no which is an index into a static table of strings...
track_optionst track_options
void get_decl_identifiers(decl_identifierst &decl_identifiers) const
get the variables in decl statements
A generic container class for the GOTO intermediate representation of one function.
typet type
Type of symbol.
virtual void initialize(const goto_programt &)
const struct_union_typet & to_struct_union_type(const typet &type)
Cast a typet to a struct_union_typet.
void get_globals(std::list< value_set_fivrt::entryt > &dest)
const typet & subtype() const
void get_entries(const symbolt &symbol, std::list< value_set_fivrt::entryt > &dest)
#define forall_goto_functions(it, functions)
value_set_domain_fivrt state
bool lookup(const irep_idt &name, const symbolt *&symbol) const override
See documentation for namespace_baset::lookup().