/************************************************************************ ** ** FILE : traio.c ** ** ZWECK : ** ** AUTOR : Michael C. Ancutici ** Universitaet Stuttgart, Fakultaet Informatik ** ** DATUM : 14.03.93 ** *************************************************************************/ #include "traio.h" #include "tra.h" #include "celltype.h" #include "netsize.h" #include #define DEFAULT_TRAN_X_DISP -HA_STE_RAD #define DEFAULT_TRAN_Y_DISP -HA_STE_RAD-5 #define F_TEXT "*** TraNeu: Es koennen nicht mehr als %d Trans verwaltet werden.\n" /************************************************************************* ** FUNKTION: TraInit ** ZWECK: ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ void TraInit() { register int i; register TRANSITION **t; for (i=0, t=TraTrans; ityp = CE_TRANSITION; O->next = NULL; O->Nr1 = TNr; O->Nr2 = 0; O->next = NULL; t->OrgTra = O; O = (OBJECT *)malloc( sizeof( OBJECT)); O->typ = CE_TRANS_NAME; O->next = NULL; O->Nr1 = TNr; O->Nr2 = 0; O->next = NULL; t->OrgTraN = O; TraTrans[ TNr] = t; } /************************************************************************* ** FUNKTION: TraNeu ** ZWECK: Fordert Speicher fuer Trans an und traegt Default-Werte ein ** EINGABE: Position Mittelpunkt Trans in Plane-Koordinaten ** RETURN: Negativ falls gescheitert, sonst Nr der Trans *************************************************************************/ int TraNeu( x, y, darst) int x, y; char darst; { register TRANSITION **t; register int i; OBJECT *O; TRANSITION *DefaultTrans; for (i=0, t=TraTrans; ( (iName[0] = EOL; DefaultTrans->Prio = 100; DefaultTrans->Break = TBREAKOFF; DefaultTrans->PosTrans.x = x; DefaultTrans->PosTrans.y = y; DefaultTrans->PosName.x = x + DEFAULT_TRAN_X_DISP; DefaultTrans->PosName.y = y + DEFAULT_TRAN_Y_DISP; DefaultTrans->Darstellung = darst; TraInsert( i, DefaultTrans); return( i); } /************************************************************************* ** FUNKTION: TraChangePlace ** ZWECK: ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ void TraChangePlace( TNr, x, y, Darst) int TNr, x, y; char Darst; { TraTrans[ TNr]->PosTrans.x = x; TraTrans[ TNr]->PosTrans.y = y; TraTrans[ TNr]->Darstellung = Darst; TraTrans[ TNr]->PosName.x = x + DEFAULT_TRAN_X_DISP; TraTrans[ TNr]->PosName.y = y + DEFAULT_TRAN_Y_DISP; } /************************************************************************* ** FUNKTION: TraRemove ** ZWECK: Gibt belegten Speicheplatz eineer Trans frei ** EINGABE: Nr der Trans *************************************************************************/ void TraRemove( TNr) int TNr; { free( (OBJECT *)( TraTrans[ TNr]->OrgTra) ); free( (OBJECT *)( TraTrans[ TNr]->OrgTraN) ); free( TraTrans[ TNr]); TraTrans[ TNr] = NULL; }