1: #
   2: /*
   3:  *	UNIX shell
   4:  *
   5:  *	S. R. Bourne
   6:  *	Bell Telephone Laboratories
   7:  *
   8:  */
   9: 
  10: /* To use stack as temporary workspace across
  11:  * possible storage allocation (eg name lookup)
  12:  * a) get ptr from `relstak'
  13:  * b) can now use `pushstak'
  14:  * c) then reset with `setstak'
  15:  * d) `absstak' gives real address if needed
  16:  */
  17: #define     relstak()   (staktop-stakbot)
  18: #define     absstak(x)  (stakbot+Rcheat(x))
  19: #define     setstak(x)  (staktop=absstak(x))
  20: #define     pushstak(c) (*staktop++=(c))
  21: #define     zerostak()  (*staktop=0)
  22: 
  23: /* Used to address an item left on the top of
  24:  * the stack (very temporary)
  25:  */
  26: #define     curstak()   (staktop)
  27: 
  28: /* `usestak' before `pushstak' then `fixstak'
  29:  * These routines are safe against heap
  30:  * being allocated.
  31:  */
  32: #define     usestak()   {locstak();}
  33: 
  34: /* for local use only since it hands
  35:  * out a real address for the stack top
  36:  */
  37: STKPTR      locstak();
  38: 
  39: /* Will allocate the item being used and return its
  40:  * address (safe now).
  41:  */
  42: #define     fixstak()   endstak(staktop)
  43: 
  44: /* For use after `locstak' to hand back
  45:  * new stack top and then allocate item
  46:  */
  47: STKPTR      endstak();
  48: 
  49: /* Copy a string onto the stack and
  50:  * allocate the space.
  51:  */
  52: STKPTR      cpystak();
  53: 
  54: /* Allocate given ammount of stack space */
  55: STKPTR      getstak();
  56: 
  57: /* A chain of ptrs of stack blocks that
  58:  * have become covered by heap allocation.
  59:  * `tdystak' will return them to the heap.
  60:  */
  61: BLKPTR      stakbsy;
  62: 
  63: /* Base of the entire stack */
  64: STKPTR      stakbas;
  65: 
  66: /* Top of entire stack */
  67: STKPTR      brkend;
  68: 
  69: /* Base of current item */
  70: STKPTR      stakbot;
  71: 
  72: /* Top of current item */
  73: STKPTR      staktop;
  74: 
  75: /* Used with tdystak */
  76: STKPTR      savstak();

Defined macros

absstak defined in line 18; used 4 times
curstak defined in line 26; used 2 times
fixstak defined in line 42; used 3 times
pushstak defined in line 20; used 10 times
relstak defined in line 17; used 3 times
setstak defined in line 19; used 2 times
usestak defined in line 32; used 2 times
zerostak defined in line 21; used 3 times

Usage of this include

stak.h used 1 times
Last modified: 1981-07-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 680
Valid CSS Valid XHTML 1.0 Strict