Browse Source

*** empty log message ***

master
Marc Alexander Lehmann 14 years ago
parent
commit
ac781805ae
  1. 18
      ev.c

18
ev.c

@ -804,6 +804,7 @@ fd_rearm_all (EV_P)
#define DHEAP 4
#define HEAP0 (DHEAP - 1) /* index of first element in heap */
#define HPARENT(k) ((((k) - HEAP0 - 1) / DHEAP) + HEAP0)
/* towards the root */
void inline_speed
@ -813,7 +814,7 @@ upheap (ANHE *heap, int k)
for (;;)
{
int p = ((k - HEAP0 - 1) / DHEAP) + HEAP0;
int p = HPARENT (k);
if (p == k || ANHE_at (heap [p]) <= ANHE_at (he))
break;
@ -823,8 +824,8 @@ upheap (ANHE *heap, int k)
k = p;
}
ev_active (ANHE_w (he)) = k;
heap [k] = he;
ev_active (ANHE_w (he)) = k;
}
/* away from the root */
@ -861,19 +862,20 @@ downheap (ANHE *heap, int N, int k)
if (ANHE_at (he) <= minat)
break;
ev_active (ANHE_w (*minpos)) = k;
heap [k] = *minpos;
ev_active (ANHE_w (*minpos)) = k;
k = minpos - heap;
}
ev_active (ANHE_w (he)) = k;
heap [k] = he;
ev_active (ANHE_w (he)) = k;
}
#else // 4HEAP
#define HEAP0 1
#define HPARENT(k) ((k) >> 1)
/* towards the root */
void inline_speed
@ -883,7 +885,7 @@ upheap (ANHE *heap, int k)
for (;;)
{
int p = k >> 1;
int p = HPARENT (k);
/* maybe we could use a dummy element at heap [0]? */
if (!p || ANHE_at (heap [p]) <= ANHE_at (he))
@ -931,8 +933,10 @@ downheap (ANHE *heap, int N, int k)
void inline_size
adjustheap (ANHE *heap, int N, int k)
{
upheap (heap, k);
downheap (heap, N, k);
if (k > HEAP0 && ANHE_at (heap [HPARENT (k)]) >= ANHE_at (heap [k]))
upheap (heap, k);
else
downheap (heap, N, k);
}
/*****************************************************************************/

Loading…
Cancel
Save