|
|
1.1 ! root 1: #include "sam.h" ! 2: ! 3: /* ! 4: * Check that list has room for one more element. ! 5: */ ! 6: growlist(l) ! 7: register List *l; ! 8: { ! 9: if(l->ptr==0 || l->nalloc==0){ ! 10: gcnew(l->ptr, l->nalloc=INCR); ! 11: l->nused=0; ! 12: }else if(l->nused==l->nalloc) ! 13: gcrenew(l->ptr, l->nalloc+=INCR); ! 14: } ! 15: /* ! 16: * Remove the ith element from the list ! 17: */ ! 18: dellist(l, i) ! 19: register List *l; ! 20: { ! 21: bcopy((uchar *)&l->ptr[i+1], (uchar *)&l->ptr[l->nused], ! 22: (uchar *)&l->ptr[i], 1); ! 23: l->nused--; ! 24: } ! 25: /* ! 26: * Add a new element, whose position is i, to the list ! 27: */ ! 28: inslist(l, i, val) ! 29: register List *l; ! 30: register i; ! 31: long val; ! 32: { ! 33: growlist(l); ! 34: bcopy((uchar *)&l->ptr[i], (uchar *)&l->ptr[l->nused], ! 35: (uchar *)&l->ptr[i+1], -1); ! 36: l->ptr[i]=val; ! 37: l->nused++; ! 38: } ! 39: listfree(l) ! 40: register List *l; ! 41: { ! 42: gcfree((uchar *)l->ptr); ! 43: free((uchar *)l); ! 44: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.