Fait tourner !
This commit is contained in:
parent
30806dd628
commit
2dc1ef9993
|
@ -132,20 +132,34 @@ void XfsmSimplifyFigure( FsmFigure )
|
||||||
|
|
||||||
fsmfig_list *FsmFigure;
|
fsmfig_list *FsmFigure;
|
||||||
{
|
{
|
||||||
|
chain_list *ScanChain;
|
||||||
|
fsmfig_list *ScanFigure;
|
||||||
bddsystem *BddSystem;
|
bddsystem *BddSystem;
|
||||||
bddcircuit *BddCircuit;
|
bddcircuit *BddCircuit;
|
||||||
|
|
||||||
|
if ( ! IsFsmFigMulti( FsmFigure ) )
|
||||||
|
{
|
||||||
|
FsmFigure->MULTI = addchain( (chain_list *)0, FsmFigure );
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( ScanChain = FsmFigure->MULTI;
|
||||||
|
ScanChain != (chain_list *)0;
|
||||||
|
ScanChain = ScanChain->NEXT )
|
||||||
|
{
|
||||||
|
ScanFigure = (fsmfig_list *)ScanChain->DATA;
|
||||||
|
|
||||||
BddSystem = createbddsystem( XFSM_BDD_VAR_NODE,
|
BddSystem = createbddsystem( XFSM_BDD_VAR_NODE,
|
||||||
XFSM_BDD_OPER_NODE, 1000, XFSM_BDD_MAX_NODE );
|
XFSM_BDD_OPER_NODE, 1000, XFSM_BDD_MAX_NODE );
|
||||||
|
|
||||||
reorderbddsystemdynamic( BddSystem, XFSM_BDD_REORDER_FUNC,
|
reorderbddsystemdynamic( BddSystem, XFSM_BDD_REORDER_FUNC,
|
||||||
XFSM_BDD_REORDER_LOW, XFSM_BDD_REORDER_RATIO );
|
XFSM_BDD_REORDER_LOW, XFSM_BDD_REORDER_RATIO );
|
||||||
|
|
||||||
BddCircuit = XfsmMakeBddCircuit( BddSystem, FsmFigure );
|
BddCircuit = XfsmMakeBddCircuit( BddSystem, ScanFigure );
|
||||||
convertfsmbddnodeabl( FsmFigure );
|
convertfsmbddnodeabl( ScanFigure );
|
||||||
|
|
||||||
destroybddcircuit( BddCircuit );
|
destroybddcircuit( BddCircuit );
|
||||||
destroybddsystem( BddSystem );
|
destroybddsystem( BddSystem );
|
||||||
|
|
||||||
FsmFigure->CIRCUIT = (bddcircuit *)0;
|
ScanFigure->CIRCUIT = (bddcircuit *)0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,7 +166,10 @@ fsmfig_list *Xfsmgetfsmfig( FileName )
|
||||||
|
|
||||||
if ( FigureFsm != (fsmfig_list *)NULL )
|
if ( FigureFsm != (fsmfig_list *)NULL )
|
||||||
{
|
{
|
||||||
delfsmfig( FigureFsm->NAME );
|
while ( HEAD_FSMFIG != (fsmfig_list *)0 )
|
||||||
|
{
|
||||||
|
delfsmfig( HEAD_FSMFIG->NAME );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
autend();
|
autend();
|
||||||
|
|
|
@ -597,6 +597,8 @@ long XfsmPlaceState( FsmState, X, Y )
|
||||||
|
|
||||||
xfsmfig_list *XfsmAddFigure()
|
xfsmfig_list *XfsmAddFigure()
|
||||||
{
|
{
|
||||||
|
fsmfig_list *FigureFsm;
|
||||||
|
chain_list *ScanChain;
|
||||||
fsmstate_list *ScanState;
|
fsmstate_list *ScanState;
|
||||||
void *Pointer;
|
void *Pointer;
|
||||||
long X;
|
long X;
|
||||||
|
@ -610,21 +612,27 @@ xfsmfig_list *XfsmAddFigure()
|
||||||
XfsmScanStepX1 = 0;
|
XfsmScanStepX1 = 0;
|
||||||
XfsmScanStepX2 = 0;
|
XfsmScanStepX2 = 0;
|
||||||
|
|
||||||
if ( XfsmFigureFsm->FIRST_STATE != (fsmstate_list *)0 )
|
for ( ScanChain = XfsmFigureFsm->MULTI;
|
||||||
|
ScanChain != (chain_list *)0;
|
||||||
|
ScanChain = ScanChain->NEXT )
|
||||||
{
|
{
|
||||||
X = 15 + XfsmPlaceState( XfsmFigureFsm->FIRST_STATE, X, 0 );
|
FigureFsm = (fsmfig_list *)ScanChain->DATA;
|
||||||
|
|
||||||
|
if ( FigureFsm->FIRST_STATE != (fsmstate_list *)0 )
|
||||||
|
{
|
||||||
|
X = 15 + XfsmPlaceState( FigureFsm->FIRST_STATE, X, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( XfsmFigureFsm->STAR_STATE != (fsmstate_list *)0 )
|
if ( FigureFsm->STAR_STATE != (fsmstate_list *)0 )
|
||||||
{
|
{
|
||||||
ScanState = XfsmFigureFsm->STAR_STATE;
|
ScanState = FigureFsm->STAR_STATE;
|
||||||
if ( ScanState->USER == (void *)0 )
|
if ( ScanState->USER == (void *)0 )
|
||||||
{
|
{
|
||||||
X = 15 + XfsmPlaceState( ScanState, X, 0 );
|
X = 15 + XfsmPlaceState( ScanState, X, 0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( ScanState = XfsmFigureFsm->STATE;
|
for ( ScanState = FigureFsm->STATE;
|
||||||
ScanState != (fsmstate_list *)0;
|
ScanState != (fsmstate_list *)0;
|
||||||
ScanState = ScanState->NEXT )
|
ScanState = ScanState->NEXT )
|
||||||
{
|
{
|
||||||
|
@ -634,7 +642,7 @@ xfsmfig_list *XfsmAddFigure()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( ScanState = XfsmFigureFsm->STATE;
|
for ( ScanState = FigureFsm->STATE;
|
||||||
ScanState != (fsmstate_list *)0;
|
ScanState != (fsmstate_list *)0;
|
||||||
ScanState = ScanState->NEXT )
|
ScanState = ScanState->NEXT )
|
||||||
{
|
{
|
||||||
|
@ -643,6 +651,7 @@ xfsmfig_list *XfsmAddFigure()
|
||||||
|
|
||||||
autfreeheap( Pointer, sizeof( xfsmcoord ) );
|
autfreeheap( Pointer, sizeof( xfsmcoord ) );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
autend();
|
autend();
|
||||||
return( XfsmFigure );
|
return( XfsmFigure );
|
||||||
|
@ -723,7 +732,10 @@ void XfsmDelFigure()
|
||||||
|
|
||||||
XfsmFreeFigure( XfsmFigure );
|
XfsmFreeFigure( XfsmFigure );
|
||||||
|
|
||||||
delfsmfig( XfsmFigureFsm->NAME );
|
while ( HEAD_FSMFIG != (fsmfig_list *)0 )
|
||||||
|
{
|
||||||
|
delfsmfig( HEAD_FSMFIG->NAME );
|
||||||
|
}
|
||||||
|
|
||||||
XfsmFigure = (xfsmfig_list *)0;
|
XfsmFigure = (xfsmfig_list *)0;
|
||||||
XfsmFigureFsm = (fsmfig_list *)0;
|
XfsmFigureFsm = (fsmfig_list *)0;
|
||||||
|
|
Loading…
Reference in New Issue