12 #ifndef CPROVER_LINKING_LINKING_CLASS_H 13 #define CPROVER_LINKING_LINKING_CLASS_H 37 ns(_main_symbol_table)
67 void rename_symbols(
const std::unordered_set<irep_idt> &needs_to_be_renamed);
116 const exprt &expr)
const;
120 const typet &type)
const;
124 const typet &type)
const;
138 exprt &conflict_path);
159 const std::string &msg);
164 const std::string &msg);
176 typedef std::unordered_map<irep_idt, std::unordered_set<irep_idt>>
used_byt;
184 #endif // CPROVER_LINKING_LINKING_CLASS_H void do_type_dependencies(std::unordered_set< irep_idt > &)
The type of an expression, extends irept.
void link_error(const symbolt &old_symbol, const symbolt &new_symbol, const std::string &msg)
void detailed_conflict_report(const symbolt &old_symbol, const symbolt &new_symbol, const typet &type1, const typet &type2)
std::string type_to_string(const irep_idt &identifier, const typet &type) const
void link_warning(const symbolt &old_symbol, const symbolt &new_symbol, const std::string &msg)
Structure type, corresponds to C style structs.
void detailed_conflict_report_rec(const symbolt &old_symbol, const symbolt &new_symbol, const typet &type1, const typet &type2, unsigned depth, exprt &conflict_path)
bool needs_renaming_non_type(const symbolt &old_symbol, const symbolt &new_symbol)
const symbolt & new_symbol
std::unordered_map< irep_idt, std::unordered_set< irep_idt > > used_byt
std::unordered_set< irep_idt > n_symbols
std::string expr_to_string(const irep_idt &identifier, const exprt &expr) const
bool needs_renaming(const symbolt &old_symbol, const symbolt &new_symbol)
Replace expression or type symbols by an expression or type, respectively.
void show_struct_diff(const struct_typet &old_type, const struct_typet &new_type)
std::string type_to_string_verbose(const symbolt &symbol) const
std::unordered_set< irep_idt > renamed_ids
API to expression classes.
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
const symbolt & old_symbol
casting_replace_symbolt object_type_updates
adjust_type_infot(const symbolt &_old_symbol, const symbolt &_new_symbol)
bool needs_renaming_type(const symbolt &old_symbol, const symbolt &new_symbol)
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
std::string type_to_string_verbose(const symbolt &symbol, const typet &type) const
irep_idt rename(irep_idt)
void duplicate_code_symbol(symbolt &old_symbol, symbolt &new_symbol)
bool adjust_object_type_rec(const typet &type1, const typet &type2, adjust_type_infot &info)
symbol_table_baset & main_symbol_table
typet type
Type of symbol.
Base class for all expressions.
void duplicate_non_type_symbol(symbolt &old_symbol, symbolt &new_symbol)
The symbol table base class interface.
rename_symbolt rename_symbol
symbol_table_baset & src_symbol_table
void duplicate_object_symbol(symbolt &old_symbol, symbolt &new_symbol)
linkingt(symbol_table_baset &_main_symbol_table, symbol_table_baset &_src_symbol_table, message_handlert &_message_handler)
bool replace_symbol_expr(symbol_exprt &dest) const override
bool adjust_object_type(const symbolt &old_symbol, const symbolt &new_symbol, bool &set_to_new)
Expression to hold a symbol (variable)
std::unordered_set< irep_idt > o_symbols
void rename_symbols(const std::unordered_set< irep_idt > &needs_to_be_renamed)
void duplicate_type_symbol(symbolt &old_symbol, const symbolt &new_symbol)