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