@kv  0.0.4
Library for graph problems in C and Python
pqueue.h
1 
18 #if !defined(AT_CORE_H_INSIDE)
19 #error "Only <at/core.h> can be included directly."
20 #endif
21 #ifndef AT_PQUEUE_H
22 #define AT_PQUEUE_H
23 #include <stdint.h>
24 #include <at/core.h>
25 AT_BEGIN_DECLS
26 /*=============================================================================
27  STRUCTURE
28  ============================================================================*/
29 #define AtPQueue(type) AtPQueue##type
30 #define at_pqueue_new(queue,optimization,policy) queue = _Generic((queue), \
31  AtPQueueU64*: at_pqueueu64_new)(optimization, policy)
32 
36 typedef struct AtPQueueU64{
37  AtQueueu64* pr; /*00+8*/
38  AtListU64* v; /*08+8*/
39  uint64_t* vp; /*16+8*/
40  uint64_t cur_p; /*24+8*/
41  uint32_t ne; /*32+4*/
42  uint32_t np; /*36+4*/
43  AtOptimization o; /*40+1*/
44  AtPolicy po; /*41+1*/
46 /*=============================================================================
47  PUBLIC API
48  ============================================================================*/
49 
56 at_pqueueu64_new(AtOptimization o, AtPolicy po);
57 
66 at_pqueueu64_new_prealloc(AtOptimization o, AtPolicy po, uint64_t np, uint64_t nv);
67 
74 void
75 at_pqueueu64_add(AtPQueueU64* q, uint64_t pr, uint64_t v);
76 
82 uint64_t
83 at_pqueueu64_remove(AtPQueueU64* q);
84 
90 void
91 at_pqueueu64_remove_from(AtPQueueU64* q, uint64_t v);
92 
98 uint8_t
99 at_pqueueu64_is_empty(AtPQueueU64* q);
100 
108 uint8_t
109 at_pqueueu64_has(AtPQueueU64* q, uint64_t v);
110 
115 void
116 at_pqueueu64_destroy(AtPQueueU64** qp);
117 AT_END_DECLS
118 #endif
List 64 bits.
Definition: list.h:33
uint64_t * vp
Definition: pqueue.h:39
uint32_t np
Definition: pqueue.h:42
Priority Queue Structure.
Definition: pqueue.h:36
AtQueueu64 * pr
Definition: pqueue.h:37
AtListU64 * v
Definition: pqueue.h:38
uint32_t ne
Definition: pqueue.h:41
Definition: queue.h:34
AtPolicy po
Definition: pqueue.h:44
AtOptimization o
Definition: pqueue.h:43
uint64_t cur_p
Definition: pqueue.h:40