Lines Matching +defs:val +defs:sp

91 #define stk2stream(sp)		((Sfio_t*)(((char*)(sp))-STK_HDRSIZE))
137 register Sfio_t *sp;
139 sp = stkopen(0);
141 stkinstall(sp,overflow);
144 static int stkexcept(register Sfio_t *stream, int type, void* val, Sfdisc_t* dp)
147 NoP(val);
152 register struct stk *sp = stream2stk(stream);
153 register char *cp = sp->stkbase;
155 if(--sp->stkref<=0)
217 register struct stk *sp;
221 if(!(stream=newof((char*)0,Sfio_t, 1, sizeof(*dp)+sizeof(*sp))))
224 count(addsize,sizeof(*stream)+sizeof(*dp)+sizeof(*sp));
227 sp = (struct stk*)(dp+1);
228 sp->stkref = 1;
229 sp->stkflags = (flags&STK_SMALL);
230 if(flags&STK_NULL) sp->stkoverflow = 0;
231 else sp->stkoverflow = stkcur?stkcur->stkoverflow:overflow;
247 sp->stkbase = (char*)fp;
251 fp->end = sp->stkend = cp+bsize;
266 register struct stk *sp;
278 sp = stream2stk(stream);
282 stkcur = sp;
288 sp = stkcur;
290 sp->stkoverflow = oflow;
299 register struct stk *sp = stream2stk(stream);
300 return(sp->stkref++);
311 register struct stk *sp = stream2stk(stream);
312 if(sp->stkref>1)
314 sp->stkref--;
325 register struct stk *sp = stream2stk(stream);
327 for(fp=(struct frame*)sp->stkbase; fp; fp=(struct frame*)fp->prev)
340 register struct stk *sp = stream2stk(stream);
350 fp = (struct frame*)sp->stkbase;
351 cp = sp->stkbase + roundof(sizeof(struct frame), STK_ALIGN);
362 if(loc>=cp && loc<=sp->stkend)
365 sfsetbuf(stream,cp,sp->stkend-cp);
372 sp->stkbase = fp->prev;
373 sp->stkend = ((struct frame*)(fp->prev))->end;
383 sfsetbuf(stream,cp,sp->stkend-cp);
462 struct stk *sp = stream2stk(stream);
463 if(!sp->stkoverflow || !(tp = (*sp->stkoverflow)(off)))
498 register struct stk *sp = stream2stk(stream);
499 register struct frame *fp= (struct frame*)sp->stkbase;
504 if(sp->stkflags&STK_SMALL)
511 if(stkptr(stream,0)==sp->stkbase+sizeof(struct frame))
514 dp=sp->stkbase;
515 sp->stkbase = ((struct frame*)dp)->prev;
518 if(!cp && (!sp->stkoverflow || !(cp = (*sp->stkoverflow)(n))))
525 fp->prev = sp->stkbase;
526 sp->stkbase = cp;
527 sp->stkend = fp->end = cp+n;
529 cp = sp->stkbase + roundof((cp-sp->stkbase),STK_ALIGN);
540 sfsetbuf(stream,cp,sp->stkend-cp);