/********************************/ /* memory valdes 8 30 82 */ /* */ /* Allocate memory for */ /* FOCAS */ /********************************/ #include "focas1.h" #define MAXLINE 16000 #define LINES LFWRD + LBACK + 1 #define SKY 1 extern end; extern etext; extern edata; PIXEL * tmpbfr; /* temporary line buffer */ PIXEL * rcdptr[LINES]; /* data line buffers */ float *dsky; /* sky background buffer */ float *smthln; /* smoothed image data */ memory (pixels) int pixels; /* Number of pixels in a line */ { char *fvalloc (); int i; /* Compile time memory */ static PIXEL memp[(LINES + 1) * MAXLINE]; static float memfp[MAXLINE]; static float memf[1 + MAXLINE / SKY]; if (pixels > MAXLINE) focaserr (1, "memory: Can't allocate memory", ""); dsky = memf; smthln = memfp; for (i = 0; i < LINES; i++) { rcdptr[i] = &memp[i * BSZE * (pixels / BSZE + 1)]; } tmpbfr = &memp[i * BSZE * (pixels / BSZE + 1)]; /* Runtime allocation tmpbfr = (PIXEL *) fvalloc (1, BSZE * (pixels / BSZE + 1)); dsky = (float *) fvalloc (1, (5 * ((pixels / 5) + 13) / 2); for (i = 0; i < LINES; i++) { rcdptr[i] = (PIXEL *) fvalloc (1, BSZE * (pixels / BSZE + 1)); if ((tmpbfr == 0) || (dsky == 0) || (rcdptr[i] == 0)) focaserr (2, "memory: out of buffer space", ""); } */ } char * fvalloc (num, size) unsigned num, size; { char *malloc (); return (malloc (num * size)); }