/************************************************************************ ** ** FILE : filekaio.c ** ** ZWECK : ** ** AUTOR : Michael C. Ancutici ** Universitaet Stuttgart, Fakultaet Informatik ** ** DATUM : 14.03.93 ** *************************************************************************/ #include "filekaio.h" #include "ka.h" #include "ste.h" #include "misc.h" #include "hakaio.h" #include "netsize.h" #include #include /************************************************************************* ** FUNKTION: SaveSingleKa ** ZWECK: ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ static void SaveSingleKa( f, b, k) FILE *f; char *b; KANTE *k; { STRING eb; ECKE *e; sprintf( eb, " %d %d %d %d %d E", k->NegativKante, k->delta, k->PosDelta.x, k->PosDelta.y, k->ENeuNr); strcat( b, eb); if ( (e=k->Ecke) ) do { sprintf( eb, " e %d %d %d", e->x, e->y, e->ENr); strcat( b, eb); } while ( (e=e->next) ); fprintf ( f, "%s\n", b); } /************************************************************************* ** FUNKTION: SaveAllKaForSte ** ZWECK: ** EINGABE: ** AUSGABE: ** RETURN: ** ANMERK: *************************************************************************/ static void SaveAllKaForSte( f, SNr) FILE *f; { register int i; char b[ 600]; for (i=0; iEcke = NULL; i = sscanf( b+4, "%d %d %d %d %d %d %d E", &SNr, &TNr, &(k->NegativKante), &(k->delta), &(k->PosDelta.x), &(k->PosDelta.y), &(k->ENeuNr) ); if (i != 7) { free( k); return NOT_OK; } p = b + strlen( b); for (--p; ( (*p != 'E') && (*p != 'e') ); p--); while (*p != 'E') { e = (ECKE *)malloc( sizeof( ECKE)); if (sscanf( p, "e %d %d %d", &(e->x), &(e->y), &(e->ENr) ) != 3) { free( e); while ( (e=k->Ecke) ) { k->Ecke = k->Ecke->next; free( e); } free( k); return NOT_OK; } e->next = k->Ecke; k->Ecke = e; for (--p; ( (*p != 'E') && (*p != 'e') ); p--); } if (b[1] == 'S') HaKaSTInsertX( SNr, TNr, k); else HaKaTSInsertX( SNr, TNr, k); return OK; }