/************************************************************************ ** ** FILE : steio.c ** ** ZWECK : ** ** AUTOR : Michael C. Ancutici ** Universitaet Stuttgart, Fakultaet Informatik ** ** DATUM : 14.03.93 ** *************************************************************************/ #include "steio.h" #include "ste.h" #include "celltype.h" #include "netsize.h" #include #define DEFAULT_STEN_X_DISP -HA_STE_RAD #define DEFAULT_STEN_Y_DISP -HA_STE_RAD-5 #define F_TEXT "*** SteNeu: Can't handle more than %d places.\n" /************************************************************************* ** FUNKTION: SteInit ** ZWECK: Initialisiert Stellenspeicher *************************************************************************/ void SteInit() { register int i; register STELLE **s; for (i=0, s=SteStelle; ityp = CE_STELLE; O->next = NULL; O->Nr1 = SNr; O->Nr2 = 0; s->OrgSte = O; O = (OBJECT *)malloc( sizeof( OBJECT)); O->typ = CE_STE_NAME; O->next = NULL; O->Nr1 = SNr; O->Nr2 = 0; s->OrgSteN = O; SteStelle[ SNr] = s; } /************************************************************************* ** FUNKTION: SteNeu ** ZWECK: fordert Speicher an fuer eine Stelle mit Default- ** werten ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ int SteNeu( x, y) int x, y; { register STELLE **s; register int i; OBJECT *O; STELLE *DefaultStelle; for (i=0, s=SteStelle; ( (iName[0] = EOL; DefaultStelle->Marke = 0; DefaultStelle->BreakCond = KEINE; DefaultStelle->BreakValue = 0; DefaultStelle->PosStelle.x = x; DefaultStelle->PosStelle.y = y; DefaultStelle->PosName.x = x + DEFAULT_STEN_X_DISP; DefaultStelle->PosName.y = y + DEFAULT_STEN_Y_DISP; SteInsert( i, DefaultStelle); return (i); } /************************************************************************* ** FUNKTION: SteChangePlace ** ZWECK: ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ void SteChangePlace( SNr, x, y) int SNr, x, y; { SteStelle[ SNr]->PosStelle.x = x; SteStelle[ SNr]->PosStelle.y = y; SteStelle[ SNr]->PosName.x = x + DEFAULT_STEN_X_DISP;; SteStelle[ SNr]->PosName.y = y + DEFAULT_STEN_Y_DISP;; } /************************************************************************* ** FUNKTION: SteRemove ** ZWECK: Gibt belegten Speicheplatz eineer Stelle frei ** EINGABE: Nr der Stelle *************************************************************************/ void SteRemove( SNr) int SNr; { free( (OBJECT *)(SteStelle[ SNr]->OrgSte) ); free( (OBJECT *)(SteStelle[ SNr]->OrgSteN) ); free( SteStelle[ SNr]); SteStelle[ SNr] = NULL; }