17 symbol_table(symbol_table)
28 class_hierarchy(class_hierarchy),
29 symbol_table(symbol_table)
50 bool include_interfaces)
55 std::vector<irep_idt> classes_to_visit;
56 classes_to_visit.push_back(class_id);
57 while(!classes_to_visit.empty())
59 irep_idt current_class = classes_to_visit.back();
60 classes_to_visit.pop_back();
62 const irep_idt &full_component_identifier=
73 if(include_interfaces)
75 classes_to_visit.insert(
76 classes_to_visit.end(), parents.begin(), parents.end());
81 classes_to_visit.push_back(parents.front());
116 return !class_identifier.empty();
const std::string & id2string(const irep_idt &d)
const symbol_tablet & symbol_table
irep_idt component_identifier
bool is_valid() const
Use to check if this inherited_componentt has been fully constructed.
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...
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...
irep_idt class_identifier
#define PRECONDITION(CONDITION)
Given a class and a component (either field or method), find the closest parent that defines that com...
resolve_inherited_componentt(const symbol_tablet &symbol_table)
See the operator() method comment.
bool has_symbol(const irep_idt &name) const
Check whether a symbol exists in the symbol table.
std::vector< irep_idt > idst
irep_idt get_full_component_identifier() const
Get the full name of this function.
class_hierarchyt class_hierarchy