|
|
1.1 ! root 1: #include "defs" ! 2: ! 3: ptr gentemp(t) ! 4: ptr t; ! 5: { ! 6: register ptr oldp; ! 7: register ptr p; ! 8: register ptr q; ! 9: int ttype; ! 10: ptr ttypep, tdim; ! 11: ! 12: /* search the temporary list for a matching type */ ! 13: ! 14: ttype = t->vtype; ! 15: ttypep = t->vtypep; ! 16: tdim = t->vdim; ! 17: ! 18: for(oldp = (int *)&tempvarlist ; p = oldp->nextp ; oldp = p) ! 19: if( (q = p->datap) && (q->vtype == ttype) && ! 20: (q->vtypep == ttypep) && eqdim(q->vdim,tdim) ) ! 21: { ! 22: oldp->nextp = p->nextp; ! 23: break; ! 24: } ! 25: ! 26: if(p == PNULL) ! 27: { ! 28: q = allexpblock(); ! 29: q->tag = TTEMP; ! 30: q->subtype = t->subtype; ! 31: q->vtype = ttype; ! 32: q->vclass = t->vclass; ! 33: q->vtypep = ( ttypep ? cpexpr(ttypep) : PNULL); ! 34: q->vdim = tdim; ! 35: mkftnp(q); /* assign fortran types */ ! 36: ! 37: p = (int *)mkchain(q, CHNULL); ! 38: p->datap = q; ! 39: } ! 40: ! 41: p->nextp = thisexec->temps; ! 42: thisexec->temps = p; ! 43: ! 44: return( cpexpr(q) ); ! 45: /* need a copy of the block for the temporary list and another for use */ ! 46: } ! 47: ! 48: ! 49: ptr gent(t,tp) /* make a temporary of type t, typepointer tp */ ! 50: int t; ! 51: ptr tp; ! 52: { ! 53: static struct varblock model; ! 54: ! 55: model.vtype = t; ! 56: model.vtypep = tp; ! 57: ! 58: return( gentemp(&model) ); ! 59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.