1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include "sam.h"
- /*
- * Check that list has room for one more element.
- */
- void
- growlist(List *l)
- {
- if(l->listptr==0 || l->nalloc==0){
- l->nalloc = INCR;
- l->listptr = emalloc(INCR*sizeof(long));
- l->nused = 0;
- }else if(l->nused == l->nalloc){
- l->listptr = erealloc(l->listptr, (l->nalloc+INCR)*sizeof(long));
- memset((void*)(l->longptr+l->nalloc), 0, INCR*sizeof(long));
- l->nalloc += INCR;
- }
- }
- /*
- * Remove the ith element from the list
- */
- void
- dellist(List *l, int i)
- {
- memmove(&l->longptr[i], &l->longptr[i+1], (l->nused-(i+1))*sizeof(long));
- l->nused--;
- }
- /*
- * Add a new element, whose position is i, to the list
- */
- void
- inslist(List *l, int i, long val)
- {
- growlist(l);
- memmove(&l->longptr[i+1], &l->longptr[i], (l->nused-i)*sizeof(long));
- l->longptr[i] = val;
- l->nused++;
- }
- void
- listfree(List *l)
- {
- free(l->listptr);
- free(l);
- }
|