Go to the documentation of this file.
20 : class_hierarchy(class_hierarchy), symbol_table(symbol_table)
41 bool include_interfaces)
46 std::vector<irep_idt> classes_to_visit;
47 classes_to_visit.push_back(class_id);
48 while(!classes_to_visit.empty())
50 irep_idt current_class = classes_to_visit.back();
51 classes_to_visit.pop_back();
53 const irep_idt &full_component_identifier=
66 if(include_interfaces)
68 classes_to_visit.insert(
69 classes_to_visit.end(), parents.begin(), parents.end());
74 classes_to_visit.push_back(parents.front());
110 return !class_identifier.empty();
bool has_symbol(const irep_idt &name) const
Check whether a symbol exists in the symbol table.
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
#define PRECONDITION(CONDITION)
Non-graph-based representation of the class hierarchy.
bool is_valid() const
Use to check if this inherited_componentt has been fully constructed.
irep_idt component_identifier
irep_idt get_full_component_identifier() const
Get the full name of this function.
resolve_inherited_componentt(const symbol_tablet &symbol_table, const class_hierarchyt &class_hierarchy)
See the operator() method comment.
irep_idt class_identifier
const std::string & id2string(const irep_idt &d)
const class_hierarchyt & class_hierarchy
std::vector< irep_idt > idst
const symbol_tablet & symbol_table
static irep_idt build_full_component_identifier(const irep_idt &class_name, const irep_idt &component_name)
Build a component name as found in a GOTO symbol table equivalent to the name of a concrete component...
inherited_componentt operator()(const irep_idt &class_id, const irep_idt &component_name, bool include_interfaces)
Given a class and a component, identify the concrete field or method it is resolved to.