1 76193d7c 2003-09-30 devnull #include "sam.h"
4 76193d7c 2003-09-30 devnull * Check that list has room for one more element.
7 76193d7c 2003-09-30 devnull growlist(List *l)
9 76193d7c 2003-09-30 devnull if(l->listptr==0 || l->nalloc==0){
10 76193d7c 2003-09-30 devnull l->nalloc = INCR;
11 76193d7c 2003-09-30 devnull l->listptr = emalloc(INCR*sizeof(long));
12 76193d7c 2003-09-30 devnull l->nused = 0;
13 76193d7c 2003-09-30 devnull }else if(l->nused == l->nalloc){
14 76193d7c 2003-09-30 devnull l->listptr = erealloc(l->listptr, (l->nalloc+INCR)*sizeof(long));
15 76193d7c 2003-09-30 devnull memset((void*)(l->longptr+l->nalloc), 0, INCR*sizeof(long));
16 76193d7c 2003-09-30 devnull l->nalloc += INCR;
21 76193d7c 2003-09-30 devnull * Remove the ith element from the list
24 76193d7c 2003-09-30 devnull dellist(List *l, int i)
26 76193d7c 2003-09-30 devnull memmove(&l->longptr[i], &l->longptr[i+1], (l->nused-(i+1))*sizeof(long));
27 76193d7c 2003-09-30 devnull l->nused--;
31 76193d7c 2003-09-30 devnull * Add a new element, whose position is i, to the list
34 76193d7c 2003-09-30 devnull inslist(List *l, int i, long val)
36 76193d7c 2003-09-30 devnull growlist(l);
37 76193d7c 2003-09-30 devnull memmove(&l->longptr[i+1], &l->longptr[i], (l->nused-i)*sizeof(long));
38 76193d7c 2003-09-30 devnull l->longptr[i] = val;
39 76193d7c 2003-09-30 devnull l->nused++;
43 76193d7c 2003-09-30 devnull listfree(List *l)
45 76193d7c 2003-09-30 devnull free(l->listptr);