|
|
1.1 ! root 1: extern char *alloc_end; ! 2: extern char *alloc_ptr; ! 3: extern cfrag *kfree; ! 4: extern cfrag *ktmp; ! 5: extern cnode *cfree; ! 6: extern cnode *ctmp; ! 7: extern token *tfree; ! 8: extern token *ttmp; ! 9: extern xnode *xfree; ! 10: extern xnode *xtmp; ! 11: ! 12: extern char *alloc_fill(); ! 13: extern char *alloc_vector(); ! 14: extern char *chunk(); ! 15: extern char *rechunk(); ! 16: extern cfrag *kreplenish(); ! 17: extern cnode *creplenish(); ! 18: extern token *treplenish(); ! 19: extern void free_chunk(); ! 20: extern xnode *xreplenish(); ! 21: ! 22: #define alloc(n) ((alloc_ptr += (n)) > alloc_end ? alloc_fill(n) : (alloc_ptr - (n))) ! 23: #define talloc(x) (x *)alloc(sizeof(x)) ! 24: #define vector(p, n, t) (t *)alloc_vector((char *)p, (n) * sizeof (t)) ! 25: ! 26: #if !defined(ALLOC_CALLS) && !defined(ALLOC_INTRIN) ! 27: #define new_cnode() (cfree = (ctmp = cfree == NULL ? creplenish() : cfree)->c_next, ctmp) ! 28: #define free_cnode(c) (ctmp = cfree, (cfree = c)->c_next = ctmp) ! 29: ! 30: #define new_cfrag() (kfree = (ktmp = kfree == NULL ? kreplenish() : kfree)->k_next, ktmp) ! 31: #define free_cfrag(k) (ktmp = kfree, (kfree = k)->k_next = ktmp) ! 32: ! 33: #define new_token() (tfree = (ttmp = tfree == NULL ? treplenish() : tfree)->t_value.t, ttmp) ! 34: #define free_token(p) (ttmp = tfree, (tfree = p)->t_value.t = ttmp) ! 35: ! 36: #define new_xnode() (xfree = (xtmp = xfree == NULL ? xreplenish() : xfree)->x_left, xtmp) ! 37: #define free_xnode(x) (xtmp = xfree, (xfree = x)->x_left = xtmp) ! 38: #else ! 39: extern void free_cnode(); ! 40: extern cnode *new_cnode(); ! 41: extern void free_cfrag(); ! 42: extern cfrag *new_cfrag(); ! 43: extern void free_token(); ! 44: extern token *new_token(); ! 45: extern void free_xnode(); ! 46: extern xnode *new_xnode(); ! 47: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.