int GetCombos(FILENODE *fptr, int *ix, int *iy, int *ia, int *ib, FILENODE **bp) /* * finds all combos of incX, incY, alpha and beta returns # of unique combos */ { FILENODE *fp, *pp; int i=1, j; if (!fptr) return(0); /* * Always include general case */ *ix = 0; *iy = 0; *ia = AlphaX; *ib = AlphaX; *bp = NULL; for (fp=fptr; fp; fp = fp->next) { for (j=0; j < i; j++) if (fp->incX == ix[j] && fp->incY == iy[j] && fp->alpha == ia[j] && fp->beta == ib[j]) break; if (j == i) /* not already there */ { ix[i] = fp->incX; iy[i] = fp->incY; ia[i] = fp->alpha; ib[i] = fp->beta; bp[i++] = NULL; } } PrintFN(fptr); PrintTable(i, ix, iy, ia, ib, bp); return(i); }
FILENODE *ReadFile(char pre) { FILE *fpin; FILENODE *fbase, *fn, *fp=NULL; char ln[512], rout[256], auth[256], cc[256], ccflags[512]; char *pcc, *pccflags; int i, n, ID, alpha, beta, incX, incY; sprintf(ln, "%caxpby.dsc", pre); fpin = fopen(ln, "r"); assert(fpin); assert(fgets(ln, 512, fpin) != NULL); sscanf(ln, " %d", &n); for (i=0; i < n; i++) { assert(fgets(ln, 512, fpin) != NULL); assert(sscanf(ln, " %d %d %d %d %d %s \"%[^\"]", &ID, &alpha, &beta, &incX, &incY, rout, auth) == 7); if (pre == 's' || pre == 'd') { if (alpha != -1 && alpha != 1) alpha = AlphaX; } else if (alpha != -1 && alpha != 1 && alpha != 0) alpha = AlphaX; if (pre == 's' || pre == 'd') { if (beta != -1 && beta != 1) beta = AlphaX; } else if (beta != -1 && beta != 1 && beta != 0) beta = AlphaX; if (LineIsCont(ln)) { assert(fgets(cc, 256, fpin) != NULL); assert(fgets(ccflags, 512, fpin) != NULL); FixFlags(cc); FixFlags(ccflags); pcc = cc; pccflags = ccflags; } else pcc = pccflags = NULL; fn = AllocFN(ID, incX, incY, alpha, beta, rout, auth, pcc, pccflags); if (fp) fp->next = fn; else fbase = fn; fp = fn; } PrintFN(fbase); return(fbase); }
FILENODE *ReadFile(char pre) { FILE *fpin; FILENODE *fbase, *fn, *fp=NULL; char ln[512], rout[256], auth[256], cc[256], ccflags[256]; char *pcc, *pccflags; int i, n, ID, alpha, beta, incX, incY; sprintf(ln, "%cnrm2.dsc", pre); fpin = fopen(ln, "r"); assert(fpin); assert(fgets(ln, 512, fpin) != NULL); sscanf(ln, " %d", &n); for (i=0; i < n; i++) { assert(fgets(ln, 512, fpin) != NULL); assert(sscanf(ln, " %d %d %s \"%[^\"]", &ID, &incX, rout, auth) == 4); incY = 0; alpha = beta = AlphaX; if ( (pre == 'c' || pre == 'z') && incX == 1 ) continue; if (LineIsCont(ln)) { assert(fgets(cc, 256, fpin) != NULL); assert(fgets(ccflags, 512, fpin) != NULL); FixFlags(cc); FixFlags(ccflags); pcc = cc; pccflags = ccflags; } else pcc = pccflags = NULL; fn = AllocFN(ID, incX, incY, alpha, beta, rout, auth, pcc, pccflags); if (fp) fp->next = fn; else fbase = fn; fp = fn; } PrintFN(fbase); return(fbase); }