static void percolate_down(git_pqueue *q, size_t i) { size_t child_node; void *moving_node = q->d[i]; while ((child_node = maxchild(q, i)) != 0 && q->cmppri(moving_node, q->d[child_node])) { q->d[i] = q->d[child_node]; i = child_node; } q->d[i] = moving_node; }
void pqueue_dump(pqueue_t *q, FILE *out, pqueue_print_entry_f print) { int i; fprintf(out, "posn\tleft\tright\tparent\tmaxchild\t...\n"); for (i = 1; i < q->size ; i++) { fprintf(out, "%d\t%d\t%d\t%d\t%ul\t", i, left(i), right(i), parent(i), (unsigned int)maxchild(q, i)); print(out, q->d[i]); } }
static void percolate_down(pqueue_t *q, unsigned int i) { unsigned int child_node; void *moving_node = q->d[i]; pqueue_pri_t moving_pri = q->getpri(moving_node); while ((child_node = maxchild(q, i)) && q->cmppri(moving_pri, q->getpri(q->d[child_node]))) { q->d[i] = q->d[child_node]; q->setpos(q->d[i], i); i = child_node; } q->d[i] = moving_node; q->setpos(moving_node, i); }