1: #ifndef lint 2: static char sccsid[] = "@(#)tb.c 4.3 9/14/85"; 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== -1 || 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 == -1) 75: error("no space for vectors"); 76: } 77: tp=(int *)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: }