/* * ACE/gredit - 2d finite element grid generation * * Paul J. Turner and Antonio M. Baptista * * Copyright 1990-2003 Oregon Health and Science University * All Rights Reserved. * */ /* * * write a parameter file * */ #ifndef lint static char RCSid[] = "$Id: params.c,v 1.2 2003/07/24 15:44:05 pturner Exp $"; #endif #include <stdio.h> #include "defines.h" #include "globals.h" #define PARMS_MAGIC 23456789 void putparms_binary(int gno, char *fname) { int i, j, k, cnt, ming, maxg; FILE *pp; char buf[256]; int magic = PARMS_MAGIC; if ((pp = fopen(fname, "w")) == NULL) { sprintf(buf, "Can't open parameter file %s", fname); errwin(buf); return; } fwrite(&magic, sizeof(int), 1, pp); /* annotation */ cnt = 0; for (k = 0; k < MAXSTR; k++) { if (pstr[k].active == ON && (pstr[k].s[0] || pstr[k].type)) { cnt++; } } fwrite(&grid[0].ip, sizeof(Isolparms), 1, pp); fwrite(&grid[MAXGRIDS].ip, sizeof(Isolparms), 1, pp); fwrite(&cnt, sizeof(int), 1, pp); for (k = 0; k < MAXSTR; k++) { if (pstr[k].active == ON && (pstr[k].s[0] || pstr[k].type)) { fwrite(&k, sizeof(int), 1, pp); fwrite(&pstr[k], sizeof(plotstr), 1, pp); } } cnt = 0; for (k = 0; k < MAXBOXES; k++) { if (boxes[k].active == ON) { cnt++; } } fwrite(&cnt, sizeof(int), 1, pp); for (k = 0; k < MAXBOXES; k++) { if (boxes[k].active == ON) { fwrite(&k, sizeof(int), 1, pp); fwrite(&boxes[k], sizeof(boxtype), 1, pp); } } cnt = 0; for (k = 0; k < MAXLINES; k++) { if (lines[k].active == ON) { cnt++; } } fwrite(&cnt, sizeof(int), 1, pp); for (k = 0; k < MAXLINES; k++) { if (lines[k].active == ON) { fwrite(&k, sizeof(int), 1, pp); fwrite(&lines[k], sizeof(linetype), 1, pp); } } fclose(pp); } int getparms_binary(int gno, char *fname) { int i, j, k, cnt, ng, itmp, magic; char buf[256]; FILE *pp; if ((pp = fopen(fname, "r")) == NULL) { sprintf(buf, "Can't open parameter file %s", fname); errwin(buf); return 0; } fread(&magic, sizeof(int), 1, pp); if (magic != PARMS_MAGIC) { errwin("Bad magic in parameter file"); fclose(pp); return 0; } fread(&grid[0].ip, sizeof(Isolparms), 1, pp); fread(&grid[MAXGRIDS].ip, sizeof(Isolparms), 1, pp); /* annotation */ fread(&cnt, sizeof(int), 1, pp); for (i = 0; i < cnt; i++) { fread(&ng, sizeof(int), 1, pp); fread(&pstr[ng], sizeof(plotstr), 1, pp); } fread(&cnt, sizeof(int), 1, pp); for (i = 0; i < cnt; i++) { fread(&ng, sizeof(int), 1, pp); fread(&boxes[ng], sizeof(boxtype), 1, pp); } fread(&cnt, sizeof(int), 1, pp); for (i = 0; i < cnt; i++) { fread(&ng, sizeof(int), 1, pp); fread(&lines[ng], sizeof(linetype), 1, pp); } fclose(pp); return 1; }