Go to the documentation of this file.
12 #ifndef CPROVER_LINKING_LINKING_CLASS_H
13 #define CPROVER_LINKING_LINKING_CLASS_H
38 ns(_main_symbol_table)
68 std::unordered_map<irep_idt, irep_idt>
69 rename_symbols(
const std::unordered_set<irep_idt> &needs_to_be_renamed);
70 void copy_symbols(
const std::unordered_map<irep_idt, irep_idt> &);
118 const exprt &expr)
const;
122 const typet &type)
const;
126 const typet &type)
const;
140 exprt &conflict_path);
161 const std::string &msg);
166 const std::string &msg);
178 typedef std::unordered_map<irep_idt, std::unordered_set<irep_idt>>
used_byt;
186 #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)
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.
std::unordered_map< irep_idt, irep_idt > rename_symbols(const std::unordered_set< irep_idt > &needs_to_be_renamed)
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
void copy_symbols(const std::unordered_map< irep_idt, irep_idt > &)
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.
const symbol_table_baset & src_symbol_table
bool replace_symbol_expr(symbol_exprt &dest) const override
linkingt(symbol_table_baset &_main_symbol_table, const symbol_table_baset &_src_symbol_table, message_handlert &_message_handler)
void duplicate_non_type_symbol(symbolt &old_symbol, symbolt &new_symbol)
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)
void detailed_conflict_report(const symbolt &old_symbol, const symbolt &new_symbol, const typet &type1, const typet &type2)
irep_idt rename(const irep_idt &)
std::unordered_set< irep_idt > renamed_ids
std::unordered_set< irep_idt > n_symbols
const symbolt & old_symbol
std::unordered_set< irep_idt > o_symbols
adjust_type_infot(const symbolt &_old_symbol, const symbolt &_new_symbol)
Replace a symbol expression by a given expression.