blob: f796c2317948be2c82aaa15c29b5e9aba1730168 [file] [log] [blame]
Han-Wen Nienhuys3b34f632021-10-07 20:25:10 +00001/*
2Copyright 2020 Google LLC
3
4Use of this source code is governed by a BSD-style
5license that can be found in the LICENSE file or at
6https://developers.google.com/open-source/licenses/bsd
7*/
8
9#ifndef PQ_H
10#define PQ_H
11
12#include "record.h"
13
14struct pq_entry {
Patrick Steinhardt5c115292024-03-04 11:48:47 +010015 size_t index;
Patrick Steinhardtbb2d6be2024-03-04 11:48:59 +010016 struct reftable_record *rec;
Han-Wen Nienhuys3b34f632021-10-07 20:25:10 +000017};
18
19struct merged_iter_pqueue {
20 struct pq_entry *heap;
21 size_t len;
22 size_t cap;
23};
24
Han-Wen Nienhuys3b34f632021-10-07 20:25:10 +000025void merged_iter_pqueue_check(struct merged_iter_pqueue pq);
26struct pq_entry merged_iter_pqueue_remove(struct merged_iter_pqueue *pq);
Elijah Connersc18eecb2022-09-14 20:37:34 -070027void merged_iter_pqueue_add(struct merged_iter_pqueue *pq, const struct pq_entry *e);
Han-Wen Nienhuys3b34f632021-10-07 20:25:10 +000028void merged_iter_pqueue_release(struct merged_iter_pqueue *pq);
29int pq_less(struct pq_entry *a, struct pq_entry *b);
30
Patrick Steinhardtf1bf54a2024-03-04 11:49:35 +010031static inline struct pq_entry merged_iter_pqueue_top(struct merged_iter_pqueue pq)
32{
33 return pq.heap[0];
34}
35
36static inline int merged_iter_pqueue_is_empty(struct merged_iter_pqueue pq)
37{
38 return pq.len == 0;
39}
40
Han-Wen Nienhuys3b34f632021-10-07 20:25:10 +000041#endif