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