DiaDes  0.1
DIAgnosis of Discrete-Event System
Public Types | Public Member Functions | Protected Member Functions | Private Attributes | List of all members
Diades::Automata::Experimental::DdAutFileDescriptor Class Reference

#include <DdAutFileDescriptor.hh>

Public Types

enum  DdAutExtensions {
  DdAutExtensions::Invalid, DdAutExtensions::Empty, DdAutExtensions::State, DdAutExtensions::Event,
  DdAutExtensions::Other, DdAutExtensions::Initial, DdAutExtensions::Acceptor, DdAutExtensions::Name,
  DdAutExtensions::Id
}
 
using DetailedState = std::string
 
using DetailedEvent = std::string
 
using ConstAcceptorIterator = std::set< State >::const_iterator
 
using AcceptorIterator = std::set< State >::iterator
 
using ConstInitialIterator = std::set< State >::const_iterator
 
using InitialIterator = std::set< State >::iterator
 
using ConstDetailedStateIterator = std::map< State, DetailedState >::const_iterator
 
using DetailedStateIterator = std::map< State, DetailedState >::iterator
 
using ConstDetailedEventIterator = std::map< Event, DetailedEvent >::const_iterator
 
using DetailedEventIterator = std::map< Event, DetailedEvent >::iterator
 
- Public Types inherited from Diades::Automata::Experimental::AutFileDescriptor< DdAutEventId >
using State = size_t
 
using Event = DdAutEventId
 
using MyReadEvent = ReadEvent< Event >
 
using MyPrintEvent = PrintEvent< Event >
 
using ConstTransitionIterator = typename std::set< Transition >::const_iterator
 
using TransitionIterator = typename std::set< Transition >::iterator
 
using ConstInitialIterator = typename std::set< State >::const_iterator
 
using InitialIterator = typename std::set< State >::iterator
 

Public Member Functions

 DdAutFileDescriptor ()=default
 
 DdAutFileDescriptor (DdAutFileDescriptor const &other)=default
 
DdAutFileDescriptoroperator= (DdAutFileDescriptor const &other)=default
 
 DdAutFileDescriptor (DdAutFileDescriptor &&other)=default
 
DdAutFileDescriptoroperator= (DdAutFileDescriptor &&other)=default
 
virtual ~DdAutFileDescriptor ()=default
 
virtual bool readStream (std::istream &stream)
 
virtual bool toStream (std::ostream &stream)
 
virtual void clear ()
 
ConstAcceptorIterator acceptorBegin () const
 
ConstAcceptorIterator acceptorEnd () const
 
std::pair< AcceptorIterator, bool > setAcceptor (State s)
 
ConstDetailedStateIterator stateBegin () const
 
ConstDetailedStateIterator stateEnd () const
 
std::pair< DetailedStateIterator, bool > setState (State s, const DetailedState &detail)
 
ConstDetailedEventIterator eventBegin () const
 
ConstDetailedEventIterator eventEnd () const
 
std::pair< DetailedEventIterator, bool > setEvent (const Event &e, const DetailedEvent &detail)
 
const string & setName (const string &name)
 
const string & name () const
 
size_t setId (size_t id)
 
size_t id () const
 
- Public Member Functions inherited from Diades::Automata::Experimental::AutFileDescriptor< DdAutEventId >
 AutFileDescriptor ()=default
 
 AutFileDescriptor (AutFileDescriptor const &other)=default
 
 AutFileDescriptor (AutFileDescriptor &&other)=default
 
AutFileDescriptoroperator= (AutFileDescriptor const &other)=default
 
AutFileDescriptoroperator= (AutFileDescriptor &&other)=default
 
virtual ~AutFileDescriptor ()=default
 
size_t numberOfStates () const
 
size_t setNumberOfStates (size_t nbStates)
 
size_t numberOfTransitions () const
 
ConstTransitionIterator transBegin () const
 
ConstTransitionIterator transEnd () const
 
std::pair< AutFileDescriptor::TransitionIterator, bool > addTransition (Transition &&transition)
 
TransitionIterator removeTransition (const Transition &transition)
 
ConstInitialIterator initialBegin () const
 
ConstInitialIterator initialEnd () const
 
std::pair< InitialIterator, bool > setInitial (State s)
 
size_t numberOfInitialStates () const
 
void clearInitial ()
 

Protected Member Functions

bool readDdAutExtensions (std::istream &stream)
 
DdAutExtensions readEventExtension (std::istream &stream)
 
DdAutExtensions readAcceptorExtension (std::istream &stream)
 
DdAutExtensions readInitialExtension (std::istream &stream, bool &firstInitialExtension)
 
DdAutExtensions readStateExtension (std::istream &stream)
 
DdAutExtensions readNameExtension (std::istream &stream)
 
DdAutExtensions readIdExtension (std::istream &stream)
 
DdAutExtensions readExtensionField (std::istream &stream, std::string &other)
 

Private Attributes

size_t _id
 
std::string _name
 
std::set< State_acceptors
 
std::map< State, DetailedState_states
 
std::map< Event, DetailedEvent_events
 
std::unordered_map< std::string, DdAutExtensions_extensionMapping
 

Detailed Description

This class records as an object all the pieces of information that is contained in a '.ddaut' file

See also
http://cadp.inria.fr/man/aut.html about the ddaut file format: it starts as a aut file

The first line of an AUT file has the following syntax: des (<initial-state>, <number-of-transitions>, <number-of-states>) The "des" keywords stands for "descriptor". The <number-of-states> must be greater or equal to 1, because there is always at least one state, the initial state. State numbers range between 0 and <number-of-states> - 1. The <initial-state> is always equal to 0. The remainder of the AUT file consists of one line per transition, in an arbitrary order. Each remaining line has the following syntax: (<from-state>, <label>, <to-state>) where <from-state> and <to-state> are state numbers and where <label> can take two possible forms: <unquoted-label> consists of a character string starting with a letter, and followed by zero, one, or many letters, digits, or underscore characters. <quoted-label> consists of a character string starting with a double quote and ending with a double quote. Between these two double quotes, there can be zero, one or many printable characters; the meaning of "printable" is given by the POSIX isprint() function with locale "C" (namely, ASCII characters with decimal codes in the range from 32 to 126, bounds included). No other assumption should be made about the characters present between these two double quotes. In particular, the double quote character itself may be present, and may not necessarily be "escaped" in some way (e.g., preceded by a backslash, as in C).

About the ddaut extensions: the idea is to start from the aut format and add new fields of information: for now state, event, initial, acceptor None of this field is mandatory. There is no order. They may be several occurrence of the same field. Be as flexible as possible. None of the information in the fields has to be complete.

About state: it is a couple consisting of one <state> and one <label>, one couple per line. If the state is present several times, the last occurrence prevails About event: it is a couple consisting of one <label> (the id of the event) and one <label> (more detailed decription of the event). If the event is present several times, the last occurrence prevails About initial: it is a <state> per line About acceptor: it is a <state> per line

Definition at line 76 of file DdAutFileDescriptor.hh.

Member Typedef Documentation

◆ AcceptorIterator

Definition at line 104 of file DdAutFileDescriptor.hh.

◆ ConstAcceptorIterator

Definition at line 103 of file DdAutFileDescriptor.hh.

◆ ConstDetailedEventIterator

Definition at line 109 of file DdAutFileDescriptor.hh.

◆ ConstDetailedStateIterator

Definition at line 107 of file DdAutFileDescriptor.hh.

◆ ConstInitialIterator

Definition at line 105 of file DdAutFileDescriptor.hh.

◆ DetailedEvent

Definition at line 80 of file DdAutFileDescriptor.hh.

◆ DetailedEventIterator

Definition at line 110 of file DdAutFileDescriptor.hh.

◆ DetailedState

Definition at line 79 of file DdAutFileDescriptor.hh.

◆ DetailedStateIterator

Definition at line 108 of file DdAutFileDescriptor.hh.

◆ InitialIterator

Definition at line 106 of file DdAutFileDescriptor.hh.

Member Enumeration Documentation

◆ DdAutExtensions

Enumerator
Invalid 
Empty 
State 
Event 
Other 
Initial 
Acceptor 
Name 
Id 

Definition at line 82 of file DdAutFileDescriptor.hh.

Constructor & Destructor Documentation

◆ DdAutFileDescriptor() [1/3]

Diades::Automata::Experimental::DdAutFileDescriptor::DdAutFileDescriptor ( )
default

Default constructor

◆ DdAutFileDescriptor() [2/3]

Diades::Automata::Experimental::DdAutFileDescriptor::DdAutFileDescriptor ( DdAutFileDescriptor const &  other)
default

Copy constructor (default)

Parameters
other

◆ DdAutFileDescriptor() [3/3]

Diades::Automata::Experimental::DdAutFileDescriptor::DdAutFileDescriptor ( DdAutFileDescriptor &&  other)
default

Move constructor (default)

Parameters
other

◆ ~DdAutFileDescriptor()

virtual Diades::Automata::Experimental::DdAutFileDescriptor::~DdAutFileDescriptor ( )
virtualdefault

Destructor

Member Function Documentation

◆ acceptorBegin()

ConstAcceptorIterator Diades::Automata::Experimental::DdAutFileDescriptor::acceptorBegin ( ) const
Returns
the begin iterator over the range of accepting states

Referenced by completeDdaut(), determineDdaut(), explainFsm(), minimizeDdaut(), and projectDdaut().

◆ acceptorEnd()

ConstAcceptorIterator Diades::Automata::Experimental::DdAutFileDescriptor::acceptorEnd ( ) const
Returns
the end iterator over the range of accepting states

Referenced by completeDdaut(), determineDdaut(), explainFsm(), minimizeDdaut(), and projectDdaut().

◆ clear()

virtual void Diades::Automata::Experimental::DdAutFileDescriptor::clear ( )
virtual

◆ eventBegin()

ConstDetailedEventIterator Diades::Automata::Experimental::DdAutFileDescriptor::eventBegin ( ) const
Returns
the begin iterator over the range of detailed events

◆ eventEnd()

ConstDetailedEventIterator Diades::Automata::Experimental::DdAutFileDescriptor::eventEnd ( ) const
Returns
the end iterator over the range of detailed events

◆ id()

size_t Diades::Automata::Experimental::DdAutFileDescriptor::id ( ) const
Returns
the id (0 is the default)

◆ name()

const string& Diades::Automata::Experimental::DdAutFileDescriptor::name ( ) const
Returns
the name, empty if it does not exist

◆ operator=() [1/2]

DdAutFileDescriptor& Diades::Automata::Experimental::DdAutFileDescriptor::operator= ( DdAutFileDescriptor const &  other)
default

Assignement (default)

Parameters
other
Returns
the current Transition

◆ operator=() [2/2]

DdAutFileDescriptor& Diades::Automata::Experimental::DdAutFileDescriptor::operator= ( DdAutFileDescriptor &&  other)
default

Move assignement (default)

Parameters
other
Returns
the current Transition

◆ readAcceptorExtension()

DdAutExtensions Diades::Automata::Experimental::DdAutFileDescriptor::readAcceptorExtension ( std::istream &  stream)
protected
Parameters
streaminput stream
Returns
the next extension found after reading the current acceptor extension

◆ readDdAutExtensions()

bool Diades::Automata::Experimental::DdAutFileDescriptor::readDdAutExtensions ( std::istream &  stream)
protected
Parameters
streaminput stream
Returns
true if the reading and the filling of the descriptor for all the ddaut extensions found is a success

◆ readEventExtension()

DdAutExtensions Diades::Automata::Experimental::DdAutFileDescriptor::readEventExtension ( std::istream &  stream)
protected
Parameters
streaminput stream
Returns
the next extension found after reading the current event extension

◆ readExtensionField()

DdAutExtensions Diades::Automata::Experimental::DdAutFileDescriptor::readExtensionField ( std::istream &  stream,
std::string &  other 
)
protected
Parameters
streaminput stream
otherreturn unknown keyword
Returns
the current extension in the stream, if unknown write it in other

◆ readIdExtension()

DdAutExtensions Diades::Automata::Experimental::DdAutFileDescriptor::readIdExtension ( std::istream &  stream)
protected
Parameters
streaminput stream
Returns
the next extension found after reading the current id extension

◆ readInitialExtension()

DdAutExtensions Diades::Automata::Experimental::DdAutFileDescriptor::readInitialExtension ( std::istream &  stream,
bool &  firstInitialExtension 
)
protected
Parameters
streaminput stream
firstInitialExtensiontrue if it is the first 'initial' extension met when reading the stream
Returns
the next extension found after reading the current initial extension

◆ readNameExtension()

DdAutExtensions Diades::Automata::Experimental::DdAutFileDescriptor::readNameExtension ( std::istream &  stream)
protected
Parameters
streaminput stream
Returns
the next extension found after reading the current name extension

◆ readStateExtension()

DdAutExtensions Diades::Automata::Experimental::DdAutFileDescriptor::readStateExtension ( std::istream &  stream)
protected
Parameters
streaminput stream
Returns
the next extension found after reading the current state extension

◆ readStream()

virtual bool Diades::Automata::Experimental::DdAutFileDescriptor::readStream ( std::istream &  stream)
virtual
Parameters
streaminput stream Reads the stream to fill the DdAutFileDescriptor If the DdAutFileDescriptor was already filled, it is cleared first
Returns
true if the file parsing is a success. If not a success, the DdAutFileDescriptor is cleared.

Reimplemented from Diades::Automata::Experimental::AutFileDescriptor< DdAutEventId >.

Referenced by completeDdaut(), determineDdaut(), explainFsm(), exportDdAutToDot(), Diades::CmdInterface::loadFiniteStateAutomaton(), Diades::CmdInterface::loadFiniteStateMachine(), minimizeDdaut(), projectDdaut(), runDdaut(), tagDdAutStates2(), and trimDdAutStates2().

◆ setAcceptor()

std::pair<AcceptorIterator, bool> Diades::Automata::Experimental::DdAutFileDescriptor::setAcceptor ( State  s)
Parameters
sa State
Returns
the iterator position of the state s in the accepting states the boolean is if the state was not previously in this set

◆ setEvent()

std::pair<DetailedEventIterator, bool> Diades::Automata::Experimental::DdAutFileDescriptor::setEvent ( const Event e,
const DetailedEvent detail 
)
Parameters
ean Event
detaila DetailedEvent
Returns
an iterator on the position of the event e. The boolean is true if the event was not previously in this set. If it was, the previous detailed event is replaced by the new one

◆ setId()

size_t Diades::Automata::Experimental::DdAutFileDescriptor::setId ( size_t  id)
Parameters
idthe new id (0 is the default)
Returns
the inserted id

◆ setName()

const string& Diades::Automata::Experimental::DdAutFileDescriptor::setName ( const string &  name)
Parameters
namethe new name
Returns
the inserted name

◆ setState()

std::pair<DetailedStateIterator, bool> Diades::Automata::Experimental::DdAutFileDescriptor::setState ( State  s,
const DetailedState detail 
)
Parameters
sa State
detailthe detailed piece of information about the state s
Returns
an iterator on the position of the state s. The boolean is true if the state was not previously in this set. If it was, the previous associated detailed state is replaced by the new one

◆ stateBegin()

ConstDetailedStateIterator Diades::Automata::Experimental::DdAutFileDescriptor::stateBegin ( ) const
Returns
the begin iterator over the range of detailed states

◆ stateEnd()

ConstDetailedStateIterator Diades::Automata::Experimental::DdAutFileDescriptor::stateEnd ( ) const
Returns
the end iterator over the range of detailed states

◆ toStream()

virtual bool Diades::Automata::Experimental::DdAutFileDescriptor::toStream ( std::ostream &  stream)
virtual
Parameters
streamoutput stream Write the content of the DdAutFileDescriptor in the output stream
Returns
true if the writing is a success (valid DdAutFileDescriptor).

Reimplemented from Diades::Automata::Experimental::AutFileDescriptor< DdAutEventId >.

Member Data Documentation

◆ _acceptors

std::set<State> Diades::Automata::Experimental::DdAutFileDescriptor::_acceptors
private

Definition at line 90 of file DdAutFileDescriptor.hh.

◆ _events

std::map<Event, DetailedEvent> Diades::Automata::Experimental::DdAutFileDescriptor::_events
private

Definition at line 92 of file DdAutFileDescriptor.hh.

◆ _extensionMapping

std::unordered_map<std::string, DdAutExtensions> Diades::Automata::Experimental::DdAutFileDescriptor::_extensionMapping
private
Initial value:

Definition at line 93 of file DdAutFileDescriptor.hh.

◆ _id

size_t Diades::Automata::Experimental::DdAutFileDescriptor::_id
private

Definition at line 88 of file DdAutFileDescriptor.hh.

◆ _name

std::string Diades::Automata::Experimental::DdAutFileDescriptor::_name
private

Definition at line 89 of file DdAutFileDescriptor.hh.

◆ _states

std::map<State, DetailedState> Diades::Automata::Experimental::DdAutFileDescriptor::_states
private

Definition at line 91 of file DdAutFileDescriptor.hh.


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