Go to the documentation of this file.
6 #ifndef CPROVER_UTIL_JOURNALLING_SYMBOL_TABLE_H
7 #define CPROVER_UTIL_JOURNALLING_SYMBOL_TABLE_H
10 #include <unordered_set>
110 std::pair<symbolt &, bool> result =
118 erase(
const symbol_tablet::symbolst::const_iterator &entry)
override
120 const irep_idt entry_name = entry->first;
180 #endif // CPROVER_UTIL_JOURNALLING_SYMBOL_TABLE_H
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
void on_update(const irep_idt &id)
void on_insert(const irep_idt &id)
virtual symbolt * get_writeable(const irep_idt &name)=0
Find a symbol in the symbol table for read-write access.
journalling_symbol_tablet(symbol_table_baset &base_symbol_table)
const symbol_base_mapt & symbol_base_map
Read-only field, used to look up symbol names given their base names.
static journalling_symbol_tablet wrap(symbol_table_baset &base_symbol_table)
virtual iteratort begin() override
const changesett & get_removed() const
virtual bool move(symbolt &symbol, symbolt *&new_symbol) override
virtual void clear() override
const changesett & get_updated() const
virtual symbolt * get_writeable(const irep_idt &identifier) override
Find a symbol in the symbol table for read-write access.
const symbol_module_mapt & symbol_module_map
Read-only field, used to look up symbol names given their modules.
virtual iteratort end() override
virtual void erase(const symbolst::const_iterator &entry)=0
Remove a symbol from the symbol table.
virtual iteratort begin()=0
std::size_t next_unused_suffix(const std::string &prefix) const override
virtual void erase(const symbol_tablet::symbolst::const_iterator &entry) override
Remove a symbol from the symbol table.
The symbol table base class interface.
virtual std::pair< symbolt &, bool > insert(symbolt symbol) override
Move or copy a new symbol to the symbol table.
std::unordered_set< irep_idt > changesett
symbol_table_baset & base_symbol_table
virtual iteratort end()=0
void on_remove(const irep_idt &id)
const symbolst & symbols
Read-only field, used to look up symbols given their names.
journalling_symbol_tablet(journalling_symbol_tablet &&other)
virtual std::pair< symbolt &, bool > insert(symbolt symbol)=0
Move or copy a new symbol to the symbol table.
const changesett & get_inserted() const
virtual bool move(symbolt &symbol, symbolt *&new_symbol)=0
std::size_t next_unused_suffix(const std::string &prefix, std::size_t start_number) const
Find smallest unused integer i so that prefix + std::to_string(i) does not exist in the list symbols.
A symbol table wrapper that records which entries have been updated/removed.
irep_idt name
The unique identifier.
virtual const symbol_tablet & get_symbol_table() const override
virtual const symbol_tablet & get_symbol_table() const =0