12 #ifndef CPROVER_GOTO_PROGRAMS_GOTO_MODEL_H
13 #define CPROVER_GOTO_PROGRAMS_GOTO_MODEL_H
Abstract interface to eager or lazy GOTO models.
Abstract interface to eager or lazy GOTO models.
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
A collection of goto functions.
std::size_t unload(const irep_idt &name)
Remove the function named name from the function map, if it exists.
function_mapt function_map
::goto_functiont goto_functiont
void compute_location_numbers()
void validate(const namespacet &, validation_modet) const
Check that the goto functions are well-formed.
Interface providing access to a single function in a GOTO model, plus its associated symbol table.
journalling_symbol_tablet & symbol_table
const irep_idt & get_function_id()
Get function id.
goto_model_functiont(journalling_symbol_tablet &symbol_table, goto_functionst &goto_functions, const irep_idt &function_id, goto_functionst::goto_functiont &goto_function)
Construct a function wrapper.
goto_functionst::goto_functiont & get_goto_function()
Get GOTO function.
goto_functionst::goto_functiont & goto_function
void compute_location_numbers()
Re-number our goto_function.
goto_functionst & goto_functions
journalling_symbol_tablet & get_symbol_table()
Get symbol table.
const goto_functionst & get_goto_functions() const override
Accessor to get a raw goto_functionst.
const goto_functionst::goto_functiont & get_goto_function(const irep_idt &id) override
Get a GOTO function by name, or throw if no such function exists.
goto_modelt & operator=(const goto_modelt &)=delete
const symbol_tablet & get_symbol_table() const override
Accessor to get the symbol table.
goto_modelt & operator=(goto_modelt &&other)
void validate(const validation_modet vm=validation_modet::INVARIANT, const goto_model_validation_optionst &goto_model_validation_options=goto_model_validation_optionst{}) const override
Check that the goto model is well-formed.
bool can_produce_function(const irep_idt &id) const override
Determines if this model can produce a body for the given function.
symbol_tablet symbol_table
Symbol table.
goto_modelt(const goto_modelt &)=delete
goto_modelt(goto_modelt &&other)
goto_functionst goto_functions
GOTO functions.
std::size_t unload(const irep_idt &name)
Remove the function named name from the function map, if it exists.
A symbol table wrapper that records which entries have been updated/removedA caller can pass a journa...
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
virtual void clear() override
Wipe internal state of the symbol table.
void validate(const validation_modet vm=validation_modet::INVARIANT) const override
Check that the symbol table is well-formed.
Class providing the abstract GOTO model interface onto an unrelated symbol table and goto_functionst.
const symbol_tablet & symbol_table
const goto_functionst & goto_functions
bool can_produce_function(const irep_idt &id) const override
Determines if this model can produce a body for the given function.
const goto_functionst::goto_functiont & get_goto_function(const irep_idt &id) override
Get a GOTO function by name, or throw if no such function exists.
const goto_functionst & get_goto_functions() const override
Accessor to get a raw goto_functionst.
void validate(const validation_modet vm, const goto_model_validation_optionst &goto_model_validation_options) const override
Check that the goto model is well-formed.
wrapper_goto_modelt(const symbol_tablet &symbol_table, const goto_functionst &goto_functions)
const symbol_tablet & get_symbol_table() const override
Accessor to get the symbol table.
Goto Programs with Functions.
void validate_goto_model(const goto_functionst &goto_functions, const validation_modet vm, const goto_model_validation_optionst validation_options)