24 std::map<irep_idt, std::map<irep_idt, exprt> > vt_value_maps;
28 for(std::size_t i=0; i < struct_type.
components().size(); i++)
43 std::map<irep_idt, exprt> &value_map =
44 vt_value_maps[class_id];
48 if(compo.
get_bool(ID_is_pure_virtual))
52 value_map[compo.
get(ID_virtual_name)] = e;
57 value_map[compo.
get(ID_virtual_name)] = address;
62 for(std::map<
irep_idt, std::map<irep_idt, exprt> >::const_iterator cit =
63 vt_value_maps.
begin(); cit!=vt_value_maps.end(); cit++)
65 const std::map<irep_idt, exprt> &value_map=cit->second;
75 vt_symb_var.base_name=
78 vt_symb_var.location=vt_symb_type.
location;
79 vt_symb_var.is_lvalue=
true;
80 vt_symb_var.is_static_lifetime=
true;
89 std::map<irep_idt, exprt>::const_iterator cit2 =
90 value_map.
find(compo.get_base_name());
92 const exprt &value=cit2->second;
94 values.operands().push_back(value);
96 vt_symb_var.value=values;
pointer_typet pointer_type(const typet &subtype)
Operator to return the address of an object.
symbol_table_baset & symbol_table
const parameterst & parameters() const
void do_virtual_table(const symbolt &symbol)
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
std::string::const_iterator begin() const
Base class for all expressions.
typet & type()
Return the type of the expression.
bool get_bool(const irep_idt &name) const
const irept & find(const irep_idt &name) const
const irep_idt & get(const irep_idt &name) const
const irep_idt & id() const
const symbolt & lookup(const irep_idt &name) const
Lookup a symbol in the namespace.
The null pointer constant.
The pointer type These are both 'bitvector_typet' (they have a width) and 'type_with_subtypet' (they ...
const typet & base_type() const
The type of the data what we point to.
Struct constructor from list of elements.
A struct tag type, i.e., struct_typet with an identifier.
Structure type, corresponds to C style structs.
const irep_idt & get_name() const
const componentst & components() const
Expression to hold a symbol (variable)
virtual std::pair< symbolt &, bool > insert(symbolt symbol)=0
Move or copy a new symbol to the symbol table.
irep_idt base_name
Base (non-scoped) name.
source_locationt location
Source code location of definition of symbol.
typet type
Type of symbol.
irep_idt name
The unique identifier.
irep_idt mode
Language mode.
C++ Language Type Checking.
const std::string & id2string(const irep_idt &d)
API to expression classes for Pointers.
const pointer_typet & to_pointer_type(const typet &type)
Cast a typet to a pointer_typet.
#define CHECK_RETURN(CONDITION)
#define DATA_INVARIANT(CONDITION, REASON)
This condition should be used to document that assumptions that are made on goto_functions,...
#define PRECONDITION(CONDITION)
API to expression classes.
const struct_typet & to_struct_type(const typet &type)
Cast a typet to a struct_typet.
const code_typet & to_code_type(const typet &type)
Cast a typet to a code_typet.
static bool failed(bool error_indicator)