35 for(struct_typet::componentst::const_iterator
it_mem = components.begin();
36 it_mem != components.end();
45 if(
it_mem->get_is_padding())
49 for(struct_typet::componentst::const_iterator
it_next =
it_mem;
58 throw "type of unknown size:\n" +
it_type.pretty();
79 <<
"declaration of structure "
84 out <<
"members " <<
it_mem->get_name() <<
" and "
85 <<
it_next->get_name() <<
" might interfere\n";
100 throw "type of unknown size:\n"+
it_type.pretty();
105 <<
"declaration of an array at "
107 <<
"\nmight be concurrently accessed\n";
void print_struct_alignment_problems(const symbol_table_baset &symbol_table, std::ostream &out)
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
const typet & subtype() const
struct configt::ansi_ct ansi_c
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Structure type, corresponds to C style structs.
const componentst & components() const
std::vector< componentt > componentst
The symbol table base class interface.
const symbolst & symbols
Read-only field, used to look up symbols given their names.
The type of an expression, extends irept.
const typet & find_type(const irep_idt &name) const
std::optional< mp_integer > pointer_offset_size(const typet &type, const namespacet &ns)
Compute the size of a type in bytes, rounding up to full bytes.
const struct_typet & to_struct_type(const typet &type)
Cast a typet to a struct_typet.
const array_typet & to_array_type(const typet &type)
Cast a typet to an array_typet.