1 #ifndef lint 2 static char sccsid[] = "@(#)tb.c 4.4 07/22/88"; 3 #endif 4 5 /* tb.c: check which entries exist, also storage allocation */ 6 # include "t..c" 7 checkuse() 8 { 9 int i,c, k; 10 for(c=0; c<ncol; c++) 11 { 12 used[c]=lused[c]=rused[c]=0; 13 for(i=0; i<nlin; i++) 14 { 15 if (instead[i] || fullbot[i]) continue; 16 k = ctype(i,c); 17 if (k== '-' || k == '=') continue; 18 if ((k=='n'||k=='a')) 19 { 20 rused[c]|= real(table[i][c].rcol); 21 if( !real(table[i][c].rcol)) 22 used[c] |= real(table[i][c].col); 23 if (table[i][c].rcol) 24 lused[c] |= real(table[i][c].col); 25 } 26 else 27 used[c] |= real(table[i][c].col); 28 } 29 } 30 } 31 real(s) 32 char *s; 33 { 34 if (s==0) return(0); 35 if (!point(s)) return(1); 36 if (*s==0) return(0); 37 return(1); 38 } 39 int spcount = 0; 40 extern char * calloc(); 41 # define MAXVEC 20 42 char *spvecs[MAXVEC]; 43 44 char * 45 chspace() 46 { 47 char *pp; 48 if (spvecs[spcount]) 49 return(spvecs[spcount++]); 50 if (spcount>=MAXVEC) 51 error("Too many characters in table"); 52 spvecs[spcount++]= pp = calloc(MAXCHS+200,1); 53 if (pp == 0) 54 error("no space for characters"); 55 return(pp); 56 } 57 # define MAXPC 50 58 char *thisvec; 59 int tpcount = -1; 60 char *tpvecs[MAXPC]; 61 62 int * 63 alocv(n) 64 { 65 int *tp, *q; 66 if (tpcount<0 || thisvec+n > tpvecs[tpcount]+MAXCHS) 67 { 68 tpcount++; 69 if (tpvecs[tpcount]==0) 70 { 71 tpvecs[tpcount] = calloc(MAXCHS,1); 72 } 73 thisvec = tpvecs[tpcount]; 74 if (thisvec == 0) 75 error("no space for vectors"); 76 } 77 tp=thisvec; 78 thisvec+=n; 79 for(q=tp; q<thisvec; q++) 80 *q=0; 81 return(tp); 82 } 83 release() 84 { 85 extern char *exstore; 86 /* give back unwanted space in some vectors */ 87 spcount=0; 88 tpcount= -1; 89 exstore=0; 90 } 91