20 std::set<irep_idt> bases;
40 error() <<
"expected type as struct/class base" <<
eom;
50 error() <<
"expected type symbol as struct/class base" <<
eom;
60 error() <<
"expected struct or class as base, but got '"
68 error() <<
"base type is incomplete" <<
eom;
123 std::set<irep_idt> &bases,
124 std::set<irep_idt> &
vbases,
136 <<
" inherited multiple times" <<
eom;
146 for(
const auto &
b :
from.bases())
172 for(
const auto &
c :
from.components())
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
const source_locationt & source_location() const
cpp_scopet & current_scope()
void add_secondary_scope(cpp_scopet &other)
void put_compound_into_scope(const struct_union_typet::componentt &component)
void add_base_components(const struct_typet &from, const irep_idt &access, struct_typet &to, std::set< irep_idt > &bases, std::set< irep_idt > &vbases, bool is_virtual)
void typecheck_compound_bases(struct_typet &type)
void elaborate_class_template(const typet &type)
elaborate class template instances
std::string to_string(const typet &) override
exprt resolve(const cpp_namet &cpp_name, const cpp_typecheck_resolvet::wantt want, const cpp_typecheck_fargst &fargs, bool fail_with_exception=true)
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Base class for all expressions.
irept & add(const irep_idt &name)
source_locationt source_location
bool lookup(const irep_idt &name, const symbolt *&symbol) const override
See documentation for namespace_baset::lookup().
Structure type, corresponds to C style structs.
irep_idt default_access() const
Return the access specification for members where access has not been modified.
std::vector< componentt > componentst
const source_locationt & source_location() const
cpp_namet & to_cpp_name(irept &cpp_name)
C++ Language Type Checking.
C++ Language Type Checking.
#define UNREACHABLE
This should be used to mark dead code.
auto component(T &struct_expr, const irep_idt &name, const namespacet &ns) -> decltype(struct_expr.op0())
const struct_typet & to_struct_type(const typet &type)
Cast a typet to a struct_typet.
const struct_tag_typet & to_struct_tag_type(const typet &type)
Cast a typet to a struct_tag_typet.