Go to the documentation of this file.
12 #ifndef CPROVER_ANALYSES_CALL_STACK_HISTORY_H
13 #define CPROVER_ANALYSES_CALL_STACK_HISTORY_H
24 typedef std::shared_ptr<const call_stack_entryt>
cse_ptrt;
59 cur_stack !=
nullptr);
105 void output(std::ostream &out)
const override;
132 #endif // CPROVER_ANALYSES_CALL_STACK_HISTORY_H
void output(std::ostream &out) const override
call_stack_entryt(locationt l, cse_ptrt p)
unsigned int recursion_limit
call_stack_historyt(locationt l, unsigned int rec_lim)
bool operator<(const call_stack_entryt &op) const
bool should_widen(const ai_history_baset &other) const override
Domains with a substantial height may need to widen when merging this method allows the history to pr...
bool has_recursion_limit(void) const
const locationt & current_location(void) const override
The current location in the history, used to compute the transformer POSTCONDITION(return value is de...
std::shared_ptr< const call_stack_entryt > cse_ptrt
std::set< trace_ptrt, compare_historyt > trace_sett
call_stack_historyt(const call_stack_historyt &old)
#define PRECONDITION(CONDITION)
locationt current_location
bool operator<(const ai_history_baset &op) const override
The order for history_sett.
goto_programt::const_targett locationt
unsigned int recursion_limit
virtual ~call_stack_history_factoryt()
call_stack_historyt(locationt l)
A history object is an abstraction / representation of the control-flow part of a set of traces.
call_stack_historyt(cse_ptrt cur_stack, unsigned int rec_lim)
std::shared_ptr< const ai_history_baset > trace_ptrt
History objects are intended to be immutable so they can be shared to reduce memory overhead.
step_returnt step(locationt to, const trace_sett &others, trace_ptrt caller_hist) const override
Step creates a new history by advancing the current one to location "to" It is given the set of all o...
As more detailed histories can get complex (for example, nested loops or deep, mutually recursive cal...
Records the call stack Care must be taken when using this on recursive code; it will need the domain ...
std::pair< step_statust, trace_ptrt > step_returnt
virtual bool should_widen(const ai_history_baset &other) const
Domains with a substantial height may need to widen when merging this method allows the history to pr...
call_stack_history_factoryt(unsigned int rec_lim)
ai_history_baset::trace_ptrt epoch(ai_history_baset::locationt l) override
Creates a new history from the given starting point.
bool operator==(const call_stack_entryt &op) const
bool operator==(const ai_history_baset &op) const override
History objects should be comparable.