pike.git / lib / modules / ADT.pmod / Heap.pike

version» Context lines:

pike.git/lib/modules/ADT.pmod/Heap.pike:6:   static private int num_values;      #ifdef DEBUG   void verify_heap()   {    int e;    for(e=1;e<num_values;e++)    {    if(values[(e-1)/2] > values[e])    { -  write(sprintf("FEL in HEAP (%d, %d) num_values=%d\n", (e-1)/2, e, num_values)); +  write(sprintf("Error in HEAP (%d, %d) num_values=%d\n", +  (e-1)/2, e, num_values));    exit(1);    }    }   }   #else   #define verify_heap()   #endif      static void adjust_down(int elem)   {
pike.git/lib/modules/ADT.pmod/Heap.pike:64:    {    SWAP(elem, parent);    elem=parent;    }    adjust_down(elem);    return 1;    }    return 0;   }    + //! @fixme + //! Document this function   void push(mixed value)   {    if(num_values >= sizeof(values))    values+=allocate(10+sizeof(values)/4);       values[num_values++]=value;    adjust_up(num_values-1);    verify_heap();   }    -  + //! @fixme + //! Document this function   void adjust(mixed value)   {    int pos=search(values, value);    if(pos>=0)    if(!adjust_up(pos))    adjust_down(pos);    verify_heap();   }    -  + //! @fixme + //! Document this function   mixed top()   {    mixed ret;    if(!num_values)    error("Heap underflow!\n");       ret=values[0];    if(sizeof(values) > 1)    {    num_values--;
pike.git/lib/modules/ADT.pmod/Heap.pike:104:    values[num_values]=0;    adjust_down(0);       if(num_values * 3 + 10 < sizeof(values))    values=values[..num_values+10];    }    return ret;    verify_heap();   }    + //! @fixme + //! Document this function   int size() { return num_values; }