SIS
Symmetric Index Structures
/Users/dbr/ma/src/bas/lml/compressedAutomaton.h
Go to the documentation of this file.
00001 #ifndef _HEADER_FILE_COMPRESSED_AUTOMATON_
00002 #define _HEADER_FILE_COMPRESSED_AUTOMATON_
00003 
00004 #define mCompressedAutomatonGetStatesStored( aut ) ( (aut)->statesTransitions->seqStored )
00005 
00006 #define mCompressedAutomatonGetTransitionsStored( aut ) ( (aut)->transitionsStart->seqStored )
00007 
00008 typedef struct tCompressedAutomaton{
00009     UINT initialState;
00010     UINTSequence * statesTransitions;
00011     UINTSequence * statesNumberOfTransitions;
00012     UINTSequence * statesEnd;
00013     UINTSequence * transitionsStart;
00014     UINTSequence * transitionsTo;
00015     VoidSequence * data;
00016     TarjanTable * tt;
00017 } CompressedAutomaton;
00018 
00019 typedef struct tPairState{
00020     UINT transition;
00021     UINT index;
00022     //if transition == NO, then this pair state is explicit and index is the state
00023     //else index is the start position of this state in data
00024 } PairState;
00025 
00026 CompressedAutomaton * CompressedAutomatonInit( UINT symbolSize );
00027 void CompressedAutomatonAddState( CompressedAutomaton * aut, UINT state );
00028 void CompressedAutomatonAddTransition( CompressedAutomaton * aut, UINT stateFrom, UINT start, UINT stateTo );
00029 void CompressedAutomatonShrink( CompressedAutomaton * aut );
00030 void CompressedAutomatonWrite( const CompressedAutomaton * aut, FILE * fp );
00031 void CompressedAutomatonGenerateLanguage( const CompressedAutomaton * aut, FILE * fp, void (*DumpSequenceOfLabels)(FILE *, const VoidSequence *, UINT), UINT encoding );
00032 void CompressedLeftAutomatonGenerateLanguage( const CompressedAutomaton * aut, FILE * fp, void (*DumpSequenceOfLabels)(FILE *, const VoidSequence *, UINT), UINT encoding );
00033 CompressedAutomaton * CompressedAutomatonRead( FILE * fp );
00034 void CompressedAutomatonDumpStat( const CompressedAutomaton * aut, FILE * fp );
00035 void CompressedAutomatonFree( CompressedAutomaton * aut );
00036 void CompressedAutomatonSortTransitions( CompressedAutomaton * aut, UINTSequence * transitionsFrom );
00037 void CompressedAutomatonAddTarjanTable( CompressedAutomaton * aut );
00038 PairState CompressedAutomatonGetInitialPairState( const CompressedAutomaton * aut );
00039 PairState CompressedAutomatonDelta( const CompressedAutomaton * a, const PairState * state, const void * symbol );
00040 void CompressedAutomatonDumpGV( CompressedAutomaton * aut, FILE * fp, void (*DumpLabel)(const CompressedAutomaton *, FILE *, UINT, UINT), UINT encoding );
00041 
00042 #endif