GRASS 8 Programmer's Manual 8.6.0dev(2026)-4bb960b182
Loading...
Searching...
No Matches
heap.h
Go to the documentation of this file.
1/* LIBDGL -- a Directed Graph Library implementation
2 * SPDX-FileCopyrightText: 2002 Roberto Micarelli
3 * SPDX-FileCopyrightText: GRASS Development Team
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7/* best view tabstop=4
8 */
9
10#ifndef _DGL_HEAP_H_
11#define _DGL_HEAP_H_
12
13typedef union _dglHeapData {
14 void *pv;
15 int n;
16 unsigned int un;
17 long l;
18 unsigned long ul;
19
21
22typedef struct _dglHeapNode {
23 long key;
25 unsigned char flags;
26
28
29typedef struct _dglHeap {
30
31 long index; /* last node / number of current nodes (complete-binary-tree
32 array representation ...) */
33 long count; /* number of allocated nodes in ->pnode array */
34 long block; /* allocation block size expressed in number of nodes */
35 dglHeapNode_s *pnode; /* the node-array */
36
38
39extern void dglHeapInit(dglHeap_s *pheap);
40
43
44extern int dglHeapInsertMax(dglHeap_s *pheap, long key, unsigned char flags,
45 dglHeapData_u value);
46
48
49extern int dglHeapInsertMin(dglHeap_s *pheap, long key, unsigned char flags,
50 dglHeapData_u value);
51
53
54#endif
struct _dglHeapNode dglHeapNode_s
void(* dglHeapCancelItem_fn)(dglHeap_s *pheap, dglHeapNode_s *pitem)
Definition heap.h:41
void dglHeapInit(dglHeap_s *pheap)
Definition heap.c:15
int dglHeapInsertMin(dglHeap_s *pheap, long key, unsigned char flags, dglHeapData_u value)
Definition heap.c:38
void dglHeapFree(dglHeap_s *pheap, dglHeapCancelItem_fn pfnCancelItem)
Definition heap.c:23
int dglHeapExtractMax(dglHeap_s *pheap, dglHeapNode_s *pnoderet)
Definition heap.c:122
struct _dglHeap dglHeap_s
int dglHeapInsertMax(dglHeap_s *pheap, long key, unsigned char flags, dglHeapData_u value)
Definition heap.c:96
int dglHeapExtractMin(dglHeap_s *pheap, dglHeapNode_s *pnoderet)
Definition heap.c:64
union _dglHeapData dglHeapData_u
long key
Definition heap.h:23
unsigned char flags
Definition heap.h:25
dglHeapData_u value
Definition heap.h:24
dglHeapNode_s * pnode
Definition heap.h:35
long index
Definition heap.h:31
long block
Definition heap.h:34
long count
Definition heap.h:33
unsigned int un
Definition heap.h:16
void * pv
Definition heap.h:14
unsigned long ul
Definition heap.h:18
long l
Definition heap.h:17
int n
Definition heap.h:15