18 if(type.
id()==ID_struct)
30 if(!struct_type.
bases().empty())
36 for(
const auto &c : components)
38 if(c.get_bool(ID_is_type))
41 if(c.get_base_name() ==
"operator=")
44 if(c.get_bool(ID_is_virtual))
47 const typet &sub_type = c.type();
49 if(sub_type.
id()==ID_code)
51 if(c.get_bool(ID_is_virtual))
57 comp_return_type.
id() == ID_constructor ||
58 comp_return_type.
id() == ID_destructor)
63 else if(c.get(ID_access) != ID_public && !c.get_bool(ID_is_static))
72 else if(type.
id()==ID_array)
76 else if(type.
id()==ID_pointer)
84 else if(type.
id() == ID_struct_tag ||
85 type.
id() == ID_union_tag)
const typet & return_type() const
bool cpp_is_pod(const typet &type) const
const irep_idt & id() const
const symbolt & lookup(const irep_idt &name) const
Lookup a symbol in the namespace.
Structure type, corresponds to C style structs.
const basest & bases() const
Get the collection of base classes/structs.
const componentst & components() const
std::vector< componentt > componentst
typet type
Type of symbol.
The type of an expression, extends irept.
C++ Language Type Checking.
API to expression classes for Pointers.
bool is_reference(const typet &type)
Returns true if the type is a reference.
#define DATA_INVARIANT(CONDITION, REASON)
This condition should be used to document that assumptions that are made on goto_functions,...
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.
const array_typet & to_array_type(const typet &type)
Cast a typet to an array_typet.
const tag_typet & to_tag_type(const typet &type)
Cast a typet to a tag_typet.