6 #ifndef CPROVER_GOTO_PROGRAMS_LAZY_GOTO_FUNCTIONS_MAP_H
7 #define CPROVER_GOTO_PROGRAMS_LAZY_GOTO_FUNCTIONS_MAP_H
18 #include <unordered_set>
41 typedef std::pair<const key_type, goto_functiont>
value_type;
53 typedef std::function<void(
59 typedef std::function<bool(
161 function.body.compute_location_numbers();
164 return named_function;
192 function_symbol_table,
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
void convert_function(const irep_idt &identifier, goto_functionst::goto_functiont &result)
::goto_functiont goto_functiont
A goto function, consisting of function body (see body) and parameter identifiers (see parameter_iden...
A symbol table wrapper that records which entries have been updated/removedA caller can pass a journa...
static journalling_symbol_tablet wrap(symbol_table_baset &base_symbol_table)
void convert_lazy_method(const irep_idt &id, symbol_table_baset &symbol_table, message_handlert &message_handler)
bool can_convert_lazy_method(const irep_idt &id) const
Provides a wrapper for a map of lazily loaded goto_functiont.
lazy_goto_functions_mapt(underlying_mapt &goto_functions, language_filest &language_files, symbol_tablet &symbol_table, post_process_functiont post_process_function, can_generate_function_bodyt driver_program_can_generate_function_body, generate_function_bodyt driver_program_generate_function_body, message_handlert &message_handler)
Creates a lazy_goto_functions_mapt.
std::size_t unload(const key_type &name) const
Remove the function named name from the function map, if it exists.
const post_process_functiont post_process_function
reference ensure_entry_converted(const key_type &name, symbol_table_baset &function_symbol_table) const
Convert a function if not already converted, then return a reference to its goto_functionst map entry...
void ensure_function_loaded(const key_type &name) const
language_filest & language_files
const_mapped_type at(const key_type &name) const
Gets the body for a given function.
std::unordered_set< irep_idt > processed_functions
Names of functions that are already fully available in the programt state.
underlying_mapt & goto_functions
mapped_type at(const key_type &name)
Gets the body for a given function.
std::function< bool(const irep_idt &function_name, symbol_table_baset &symbol_table, goto_functiont &function, bool body_available)> generate_function_bodyt
const goto_functiont & const_mapped_type
The type of elements returned by const members.
const value_type * const_pointer
std::function< bool(const irep_idt &name)> can_generate_function_bodyt
std::pair< const key_type, goto_functiont > value_type
std::map< key_type, goto_functiont > underlying_mapt
const value_type & const_reference
const can_generate_function_bodyt driver_program_can_generate_function_body
goto_functiont & mapped_type
std::function< void(const irep_idt &name, goto_functionst::goto_functiont &function, journalling_symbol_tablet &function_symbols)> post_process_functiont
symbol_tablet & symbol_table
message_handlert & message_handler
const generate_function_bodyt driver_program_generate_function_body
bool can_produce_function(const key_type &name) const
Determines if this lazy GOTO functions map can produce a body for the given function.
reference ensure_function_loaded_internal(const key_type &name) const
The symbol table base class interface.
static symbol_table_buildert wrap(symbol_table_baset &base_symbol_table)
Goto Programs with Functions.
Goto Programs with Functions.