SIS
Symmetric Index Structures
|
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