spot  1.2.1a
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
spot::fast_product_iterator Class Reference

This is an iterator for the product. More...

#include <fasttgba/fasttgba_product.hh>

Inheritance diagram for spot::fast_product_iterator:
Inheritance graph
Collaboration diagram for spot::fast_product_iterator:
Collaboration graph

Public Member Functions

 fast_product_iterator (fasttgba_succ_iterator *left, fasttgba_succ_iterator *right, fixed_size_pool *p, bool left_is_kripke=false)
 
virtual void first ()
 Position the iterator on the first successor (if any). More...
 
virtual void next ()
 Jump to the next successor (if any). More...
 
virtual bool done () const
 Check whether the iteration is finished. More...
 
virtual fasttgba_statecurrent_state () const
 Get the state of the current successor. More...
 
virtual cube current_condition () const
 Get the condition on the transition leading to this successor. More...
 
virtual markset current_acceptance_marks () const
 Get the acceptance conditions on the transition leading to this successor. More...
 
virtual fasttgba_succ_iteratorleft () const
 An accessor to the left iterator. More...
 
virtual fasttgba_succ_iteratorright () const
 An accessor to the right iterator. More...
 

Protected Member Functions

void step ()
 

Protected Attributes

fasttgba_succ_iteratorleft_
 Reference on the left iterator. More...
 
fasttgba_succ_iteratorright_
 Reference on the right iterator. More...
 
fixed_size_poolpool_
 
bool kripke_left
 The left automaton is a Kripke. More...
 

Detailed Description

This is an iterator for the product.

This iterator is in charge to compute only valid successors it means sucessors that are correct in the meaning of cube. If t1 and t2 are resp. labelled by a and !a then no synchro- -nisation is possible

When performing the synchronisation of two tansitions t1(src_1, ap_1, , dst_1) and t2(src_2, ap_2, , dst_2) if ap_1 and ap_2 are compatible then the resulting transition would be : t ((src_1, src_2), (ap_1 & ap_2), (|), (dst_1, dst_2))

Member Function Documentation

virtual markset spot::fast_product_iterator::current_acceptance_marks ( ) const
virtual

Get the acceptance conditions on the transition leading to this successor.

Implements spot::fasttgba_succ_iterator.

virtual cube spot::fast_product_iterator::current_condition ( ) const
virtual

Get the condition on the transition leading to this successor.

This is a boolean function of atomic propositions.

Implements spot::fasttgba_succ_iterator.

virtual fasttgba_state* spot::fast_product_iterator::current_state ( ) const
virtual

Get the state of the current successor.

Note that the same state may occur at different points in the iteration. These actually correspond to the same destination. It just means there were several transitions, with different conditions, leading to the same state.

The returned state should be destroyed (see state::destroy) by the caller after it is no longer used.

Implements spot::fasttgba_succ_iterator.

virtual bool spot::fast_product_iterator::done ( ) const
virtual

Check whether the iteration is finished.

This function should be called after any call to first() or next() and before any enquiry about the current state.

The usual way to do this is with a for loop.

* for (s->first(); !s->done(); s->next())
* ...
*

Implements spot::fasttgba_succ_iterator.

virtual void spot::fast_product_iterator::first ( )
virtual

Position the iterator on the first successor (if any).

This method can be called several times to make multiple passes over successors.

Warning
One should always call done() to ensure there is a successor, even after first(). A common trap is to assume that there is at least one successor: this is wrong.

Implements spot::fasttgba_succ_iterator.

virtual fasttgba_succ_iterator* spot::fast_product_iterator::left ( ) const
virtual

An accessor to the left iterator.

virtual void spot::fast_product_iterator::next ( )
virtual

Jump to the next successor (if any).

Warning
Again, one should always call done() to ensure there is a successor.

Implements spot::fasttgba_succ_iterator.

virtual fasttgba_succ_iterator* spot::fast_product_iterator::right ( ) const
virtual

An accessor to the right iterator.

void spot::fast_product_iterator::step ( )
protected

This method is used to compute a step in the iterator considering the two sub iterators.

Member Data Documentation

bool spot::fast_product_iterator::kripke_left
protected

The left automaton is a Kripke.

fasttgba_succ_iterator* spot::fast_product_iterator::left_
protected

Reference on the left iterator.

fasttgba_succ_iterator* spot::fast_product_iterator::right_
protected

Reference on the right iterator.


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 Tue Jan 21 2014 16:52:02 for spot by doxygen 1.8.5