SIS
Symmetric Index Structures
/Users/dbr/ma/src/bas/lml/automaton.h
Go to the documentation of this file.
00001 #ifndef _HEADER_FILE_AUTOMATON_
00002 #define _HEADER_FILE_AUTOMATON_
00003 
00004 #define AUTOMATON_TYPE_SYMBOL (0)
00005 #define AUTOMATON_TYPE_SYMBOL_UINT (1)
00006 
00007 #define mAutomatonGetStatesStored( aut ) ( (aut)->statesTransitions->seqStored )
00008 
00009 #define mAutomatonGetTransitionsStored( aut ) ( (aut)->transitionsTo->seqStored )
00010 
00011 #define mAutomatonSetStateFinality( aut, state, finality )\
00012 {\
00013     if( (finality) == 0 ){\
00014         BitSequenceSet( (aut)->statesFinality, (state), 0 );\
00015     }\
00016     else{\
00017         BitSequenceSet( (aut)->statesFinality, (state), 1 );\
00018     }\
00019 }
00020 
00021 #define mAutomatonGetStateFinality( aut, state ) ( BitSequenceGet( (aut)->statesFinality, (state) ) )
00022 
00023 #define mAutomatonGetLabelSize( aut ) ( (aut)->transitionsLabel->elementSize )
00024 
00025 struct tAutomaton{
00026     UINTSequence * initialStates;
00027     UINTSequence * transitionsFrom;
00028     VoidSequence * transitionsLabel;
00029     UINTSequence * transitionsTo;
00030     UINTSequence * statesTransitions;
00031     UINTSequence * statesNumberOfTransitions;
00032     BitSequence * statesFinality;
00033     TarjanTable * tt;
00034     UINT type;
00035 };
00036 
00037 #endif