CBMC
resolve_inherited_component.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: GOTO Program Utilities
4 
5 Author: Diffblue Ltd.
6 
7 \*******************************************************************/
8 
12 
13 #ifndef CPROVER_GOTO_PROGRAMS_RESOLVE_INHERITED_COMPONENT_H
14 #define CPROVER_GOTO_PROGRAMS_RESOLVE_INHERITED_COMPONENT_H
15 
16 #include <util/irep.h>
17 
18 #include <functional>
19 #include <optional>
20 
21 class symbolt;
22 class symbol_table_baset;
23 
25 {
26 public:
28 
30  {
31  public:
33  const irep_idt &class_id, const irep_idt &component_id):
34  class_identifier(class_id),
35  component_identifier(component_id)
36  {}
37 
39 
41  {
42  return class_identifier;
43  }
44 
45  private:
48  };
49 
50  std::optional<inherited_componentt> operator()(
51  const irep_idt &class_id,
52  const irep_idt &component_name,
53  bool include_interfaces,
54  std::function<bool(const symbolt &)> user_filter = [](const symbolt &) {
55  return true;
56  });
57 
59  const irep_idt &class_name, const irep_idt &component_name);
60 
61 private:
63 };
64 
65 std::optional<resolve_inherited_componentt::inherited_componentt>
67  const irep_idt &call_basename,
68  const irep_idt &classname,
69  const symbol_table_baset &symbol_table);
70 
71 #endif // CPROVER_GOTO_PROGRAMS_RESOLVE_INHERITED_COMPONENT_H
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Definition: dstring.h:38
inherited_componentt(const irep_idt &class_id, const irep_idt &component_id)
irep_idt get_full_component_identifier() const
Get the full name of this function.
resolve_inherited_componentt(const symbol_table_baset &symbol_table)
See the operator() method comment.
std::optional< inherited_componentt > operator()(const irep_idt &class_id, const irep_idt &component_name, bool include_interfaces, std::function< bool(const symbolt &)> user_filter=[](const symbolt &) { return true;})
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...
const symbol_table_baset & symbol_table
The symbol table base class interface.
Symbol table entry.
Definition: symbol.h:28
std::optional< resolve_inherited_componentt::inherited_componentt > get_inherited_method_implementation(const irep_idt &call_basename, const irep_idt &classname, const symbol_table_baset &symbol_table)
Given a class and a component, identify the concrete method it is resolved to.