Branch: Tag:

2001-08-14

2001-08-14 21:19:34 by Martin Nilsson <mani@lysator.liu.se>

Added some basic autodoc-umentation.

Rev: lib/modules/ADT.pmod/Stack.pike:1.2

1:   #define error(X) throw( ({ (X), backtrace()[0..sizeof(backtrace())-2] }) )    + //! This class implements a simple stack. Instead of adding and removing + //! elements to an array, and thus making it vary in size for every push + //! and pop operation, this stack tries to keep the stack size constant. + //! If however the stack risks to overflow, it will allocate double its + //! current size, i.e. pushing an element on an full 32 slot stack will + //! result in a 64 slot stack with 33 elements. +    int ptr;   array arr;    -  + //! Push an element on the top of the stack.   void push(mixed val)   {    if(ptr == sizeof(arr)) {
11:    arr[ptr++] = val;   }    + //! Returns the top element from the stack, without + //! popping it.   mixed top()   {    if (ptr) {
19:    error("Stack underflow\n");   }    + //! Pops @[val] entries from the stack, or one entry + //! if no value is given. The popped entries are not + //! actually freed, only the stack pointer is moved.   void quick_pop(void|int val)   {    if (val) {
34:    }   }    + //! Pops and returns entry @[val] from the stack, counting + //! from the top. If no value is given the top element is + //! popped and returned. All poped entries are freed from + //! the stack.   mixed pop(void|int val)   {    mixed foo;
62:    return foo;   }    + //! Empties the stack, resets the stack pointer + //! and shrinks the stack size to the given value + //! or 32 if none is given. + //! @seealso + //! @[create]   void reset(int|void initial_size)   {    arr = allocate(initial_size || 32);    ptr = 0;   }    -  + //! An initial stack size can be given when + //! a stack is cloned. The default value is + //! 32.   void create(int|void initial_size)   {    arr = allocate(initial_size || 32);   }