114513Ssam #ifndef lint 2*24737Sbloom static char sccsid[] = "@(#)tb.c 4.3 09/14/85"; 314513Ssam #endif 411037Sshannon 511037Sshannon /* tb.c: check which entries exist, also storage allocation */ 611037Sshannon # include "t..c" 711037Sshannon checkuse() 811037Sshannon { 911037Sshannon int i,c, k; 1011037Sshannon for(c=0; c<ncol; c++) 1111037Sshannon { 1211037Sshannon used[c]=lused[c]=rused[c]=0; 1311037Sshannon for(i=0; i<nlin; i++) 1411037Sshannon { 1511037Sshannon if (instead[i] || fullbot[i]) continue; 1611037Sshannon k = ctype(i,c); 1711037Sshannon if (k== '-' || k == '=') continue; 1811037Sshannon if ((k=='n'||k=='a')) 1911037Sshannon { 2011037Sshannon rused[c]|= real(table[i][c].rcol); 2111037Sshannon if( !real(table[i][c].rcol)) 2211037Sshannon used[c] |= real(table[i][c].col); 2311037Sshannon if (table[i][c].rcol) 2411037Sshannon lused[c] |= real(table[i][c].col); 2511037Sshannon } 2611037Sshannon else 2711037Sshannon used[c] |= real(table[i][c].col); 2811037Sshannon } 2911037Sshannon } 3011037Sshannon } 3111037Sshannon real(s) 3211037Sshannon char *s; 3311037Sshannon { 3411037Sshannon if (s==0) return(0); 3511037Sshannon if (!point(s)) return(1); 3611037Sshannon if (*s==0) return(0); 3711037Sshannon return(1); 3811037Sshannon } 3911037Sshannon int spcount = 0; 4011037Sshannon extern char * calloc(); 4111037Sshannon # define MAXVEC 20 4211037Sshannon char *spvecs[MAXVEC]; 43*24737Sbloom 44*24737Sbloom char * 4511037Sshannon chspace() 4611037Sshannon { 4711037Sshannon char *pp; 4811037Sshannon if (spvecs[spcount]) 4911037Sshannon return(spvecs[spcount++]); 5011037Sshannon if (spcount>=MAXVEC) 5111037Sshannon error("Too many characters in table"); 5211037Sshannon spvecs[spcount++]= pp = calloc(MAXCHS+200,1); 5311037Sshannon if (pp== -1 || pp == 0) 5411037Sshannon error("no space for characters"); 5511037Sshannon return(pp); 5611037Sshannon } 5711037Sshannon # define MAXPC 50 5811037Sshannon char *thisvec; 5911037Sshannon int tpcount = -1; 6011037Sshannon char *tpvecs[MAXPC]; 61*24737Sbloom 62*24737Sbloom int * 6311037Sshannon alocv(n) 6411037Sshannon { 6511037Sshannon int *tp, *q; 6611037Sshannon if (tpcount<0 || thisvec+n > tpvecs[tpcount]+MAXCHS) 6711037Sshannon { 6811037Sshannon tpcount++; 6911037Sshannon if (tpvecs[tpcount]==0) 7011037Sshannon { 7111037Sshannon tpvecs[tpcount] = calloc(MAXCHS,1); 7211037Sshannon } 7311037Sshannon thisvec = tpvecs[tpcount]; 7411037Sshannon if (thisvec == -1) 7511037Sshannon error("no space for vectors"); 7611037Sshannon } 7711037Sshannon tp=thisvec; 7811037Sshannon thisvec+=n; 7911037Sshannon for(q=tp; q<thisvec; q++) 8011037Sshannon *q=0; 8111037Sshannon return(tp); 8211037Sshannon } 8311037Sshannon release() 8411037Sshannon { 8511037Sshannon extern char *exstore; 8611037Sshannon /* give back unwanted space in some vectors */ 8711037Sshannon spcount=0; 8811037Sshannon tpcount= -1; 8911037Sshannon exstore=0; 9011037Sshannon } 91