Branch: Tag:

1998-11-14

1998-11-14 18:17:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added quick_pop().
The initial stack size can now be specified to create() and reset().

Rev: lib/modules/Stack.pmod:1.4

2:      class stack {    int ptr; -  mixed *arr=allocate(32); +  mixed *arr;       void push(mixed val)    { -  if(ptr==sizeof(arr)) arr+=allocate(ptr); -  arr[ptr++]=val; +  if(ptr == sizeof(arr)) { +  arr += allocate(ptr);    } -  +  arr[ptr++] = val; +  }       mixed top()    {
18:    error("Stack underflow\n");    }    +  void quick_pop(void|int val) +  { +  if (val) { +  if (ptr < val) { +  ptr = 0; +  } else { +  ptr -= val; +  } +  } else { +  if (ptr > 0) { +  ptr--; +  } +  } +  } +     mixed pop(void|int val)    {    mixed foo;
46:    return foo;    }    -  void reset() +  void reset(int|void initial_size)    { -  arr=allocate(32); -  ptr=0; +  arr = allocate(initial_size || 32); +  ptr = 0;    } -  +  +  void create(int|void initial_size) +  { +  arr = allocate(initial_size || 32); +  }   };