spot  1.0
Public Member Functions | Private Attributes | List of all members
spot::state_union Class Reference

A state for spot::tgba_union.This state is in fact a pair. If the first member equals 0 and the second is different from 0, the state belongs to the left automaton. If the first member is different from 0 and the second is 0, the state belongs to the right automaton. If both members are 0, the state is the initial state. More...

#include <tgba/tgbaunion.hh>

Inheritance diagram for spot::state_union:
Inheritance graph
Collaboration diagram for spot::state_union:
Collaboration graph

Public Member Functions

 state_union (state *left, state *right)
 Constructor.
 state_union (const state_union &o)
 Copy constructor.
virtual ~state_union ()
stateleft () const
stateright () const
virtual int compare (const state *other) const
 Compares two states (that come from the same automaton).
virtual size_t hash () const
 Hash a state.
virtual state_unionclone () const
 Duplicate a state.
virtual void destroy () const
 Release a state.

Private Attributes

stateleft_
stateright_

Detailed Description

A state for spot::tgba_union.

This state is in fact a pair. If the first member equals 0 and the second is different from 0, the state belongs to the left automaton. If the first member is different from 0 and the second is 0, the state belongs to the right automaton. If both members are 0, the state is the initial state.

Constructor & Destructor Documentation

spot::state_union::state_union ( state left,
state right 
)
inline

Constructor.

Parameters
leftThe state from the left automaton.
rightThe state from the right automaton. These states are acquired by spot::state_union, and will be destroyed on destruction.
spot::state_union::state_union ( const state_union o)

Copy constructor.

virtual spot::state_union::~state_union ( )
virtual

Member Function Documentation

virtual state_union* spot::state_union::clone ( ) const
virtual

Duplicate a state.

Implements spot::state.

virtual int spot::state_union::compare ( const state other) const
virtual

Compares two states (that come from the same automaton).

This method returns an integer less than, equal to, or greater than zero if this is found, respectively, to be less than, equal to, or greater than other according to some implicit total order.

This method should not be called to compare states from different automata.

See Also
spot::state_ptr_less_than

Implements spot::state.

virtual void spot::state::destroy ( ) const
inlinevirtualinherited

Release a state.

Methods from the tgba or tgba_succ_iterator always return a new state that you should deallocate with this function. Before Spot 0.7, you had to "delete" your state directly. Starting with Spot 0.7, you update your code to this function instead (which simply calls "delete"). In a future version, some subclasses will redefine destroy() to allow better memory management (e.g. no memory allocation for explicit automata).

Reimplemented in spot::state_ta_explicit, spot::state_explicit< Label, label_hash >, spot::state_explicit< const ltl::formula *, ltl::formula_ptr_hash >, spot::state_explicit< int, identity_hash< int > >, spot::state_explicit< std::string, string_hash >, and spot::state_product.

Referenced by spot::power_map::canonicalize(), spot::shared_state_deleter(), and spot::power_map::~power_map().

virtual size_t spot::state_union::hash ( ) const
virtual

Hash a state.

This method returns an integer that can be used as a hash value for this state.

Note that the hash value is guaranteed to be unique for all equal states (in compare()'s sense) for only has long has one of these states exists. So it's OK to use a spot::state as a key in a hash_map because the mere use of the state as a key in the hash will ensure the state continues to exist.

However if you create the state, get its hash key, delete the state, recreate the same state, and get its hash key, you may obtain two different hash keys if the same state were not already used elsewhere. In practice this weird situation can occur only when the state is BDD-encoded, because BDD numbers (used to build the hash value) can be reused for other formulas. That probably doesn't matter, since the hash value is meant to be used in a hash_map, but it had to be noted.

Implements spot::state.

state* spot::state_union::left ( ) const
inline

References left_.

state* spot::state_union::right ( ) const
inline

References right_.

Member Data Documentation

state* spot::state_union::left_
private

Does the state belongs to the left automaton ?

Referenced by left().

state* spot::state_union::right_
private

Does the state belongs to the right automaton ?

Referenced by right().


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

Please comment this page and report errors about it on the RefDocComments page.
Generated on Sat Oct 27 2012 09:34:34 for spot by doxygen 1.8.1.2