All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches
priority_queue.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2013, 2014 Freie Universität Berlin
3 *
4 * This file is subject to the terms and conditions of the GNU Lesser
5 * General Public License v2.1. See the file LICENSE in the top level
6 * directory for more details.
7 */
8
9#pragma once
10
21#include <stddef.h>
22#include <stdint.h>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
36
43
47#define PRIORITY_QUEUE_NODE_INIT { NULL, 0, 0 }
48
52#define PRIORITY_QUEUE_DATA_SIGNALING (UINTPTR_MAX)
53
69
73#define PRIORITY_QUEUE_INIT { NULL }
74
83static inline void priority_queue_init(priority_queue_t *priority_queue)
84{
86
87 *priority_queue = q;
88}
89
98
111
119
120#if ENABLE_DEBUG
127
134#endif
135
136#ifdef __cplusplus
137}
138#endif
139
#define PRIORITY_QUEUE_INIT
Static initializer for priority_queue_t.
priority_queue_node_t * priority_queue_remove_head(priority_queue_t *root)
remove the priority queue's head
void priority_queue_print(priority_queue_t *root)
print the data and priority of every node in the given priority queue
static void priority_queue_init(priority_queue_t *priority_queue)
Initialize a priority queue object.
struct priority_queue_node priority_queue_node_t
data type for priority queue nodes
void priority_queue_print_node(priority_queue_t *root)
print the data, priority, and successor of a given node
void priority_queue_remove(priority_queue_t *root, priority_queue_node_t *node)
remove node from root
#define PRIORITY_QUEUE_NODE_INIT
Static initializer for priority_queue_node_t.
void priority_queue_add(priority_queue_t *root, priority_queue_node_t *new_obj)
insert new_obj into root based on its priority
static void priority_queue_node_init(priority_queue_node_t *priority_queue_node)
Initialize a priority queue node object.
data type for priority queue nodes
uintptr_t data
queue node data
struct priority_queue_node * next
next queue node
uint32_t priority
queue node priority
data type for priority queues
priority_queue_node_t * first
first queue node