spot  1.99.4a
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
spot::tgba_reachable_iterator_depth_first Class Reference

Iterate over all states of an automaton using a DFS. More...

#include <twaalgos/reachiter.hh>

Inheritance diagram for spot::tgba_reachable_iterator_depth_first:
Inheritance graph
Collaboration diagram for spot::tgba_reachable_iterator_depth_first:
Collaboration graph

Classes

struct  stack_item
 

Public Member Functions

 tgba_reachable_iterator_depth_first (const const_twa_ptr &a)
 
virtual void run ()
 Iterate over all reachable states of a spot::tgba. More...
 
virtual bool want_state (const state *s) const
 
virtual void start ()
 Called by run() before starting its iteration. More...
 
virtual void end ()
 Called by run() once all states have been explored. More...
 
virtual void process_state (const state *s, int n, twa_succ_iterator *si)
 
virtual bool will_pop_state (const state *s, int n, twa_succ_iterator *si)
 
virtual void process_link (const state *in_s, int in, const state *out_s, int out, const twa_succ_iterator *si)
 

Protected Types

typedef std::unordered_map< const state *, int, state_ptr_hash, state_ptr_equalseen_map
 

Protected Member Functions

virtual void push (const state *s, int sn)
 Push a new state in todo. More...
 
virtual void pop ()
 Pop the DFS stack. More...
 

Protected Attributes

const_twa_ptr aut_
 The spot::tgba to explore. More...
 
seen_map seen
 States already seen. More...
 
std::deque< stack_itemtodo
 the DFS stack More...
 

Detailed Description

Iterate over all states of an automaton using a DFS.

Member Function Documentation

virtual void spot::tgba_reachable_iterator_depth_first::end ( )
virtual

Called by run() once all states have been explored.

Reimplemented in spot::stats_dfs.

virtual void spot::tgba_reachable_iterator_depth_first::pop ( )
protectedvirtual

Pop the DFS stack.

Reimplemented in spot::tgba_reachable_iterator_depth_first_stack.

virtual void spot::tgba_reachable_iterator_depth_first::process_link ( const state in_s,
int  in,
const state out_s,
int  out,
const twa_succ_iterator si 
)
virtual

Called by run() to process a transition.

Parameters
in_sThe source state
inThe source state number.
out_sThe destination state
outThe destination state number.
siThe spot::twa_succ_iterator positionned on the current transition.

The in_s and out_s states are owned by the spot::tgba_reachable_iterator instance and destroyed when the instance is destroyed.

Reimplemented in spot::stats_dfs.

virtual void spot::tgba_reachable_iterator_depth_first::process_state ( const state s,
int  n,
twa_succ_iterator si 
)
virtual

Called by run() to process a state.

Parameters
sThe current state.
nA unique number assigned to s.
siThe spot::twa_succ_iterator for s.

Reimplemented in spot::stats_dfs.

virtual void spot::tgba_reachable_iterator_depth_first::push ( const state s,
int  sn 
)
protectedvirtual

Push a new state in todo.

Reimplemented in spot::tgba_reachable_iterator_depth_first_stack.

virtual void spot::tgba_reachable_iterator_depth_first::run ( )
virtual

Iterate over all reachable states of a spot::tgba.

This is a template method that will call start(), end(), want_state(), process_state(), and process_link(), while it iterates over states.

virtual void spot::tgba_reachable_iterator_depth_first::start ( )
virtual

Called by run() before starting its iteration.

Reimplemented in spot::stats_dfs.

virtual bool spot::tgba_reachable_iterator_depth_first::want_state ( const state s) const
virtual

Called by add_state or next_states implementations to filter states. Default implementation always return true.

virtual bool spot::tgba_reachable_iterator_depth_first::will_pop_state ( const state s,
int  n,
twa_succ_iterator si 
)
virtual

Called by run() to process a state before it is popped. It this method return true the state will be popped, otherwise the state will not be popped. In this case the iterator must be set to a valid position (other than end()). So if this method return false, the iterator must be change. Typically this happen during model checking with partial order reductions.

Parameters
sThe current state.
nA unique number assigned to s.
siThe spot::tgba_succ_iterator for s.

Reimplemented in spot::stats_dfs.

Member Data Documentation

const_twa_ptr spot::tgba_reachable_iterator_depth_first::aut_
protected

The spot::tgba to explore.

seen_map spot::tgba_reachable_iterator_depth_first::seen
protected

States already seen.

std::deque<stack_item> spot::tgba_reachable_iterator_depth_first::todo
protected

the DFS stack


The documentation for this class was generated from the following file:

Please direct any question, comment, or bug report to the Spot mailing list at spot@lrde.epita.fr.
Generated on Sun Oct 11 2015 10:50:09 for spot by doxygen 1.8.9.1