cdcontainers  0.1.1
Library of data containers and collections for C programming language.
Data Structures | Functions
priority-queue.h File Reference

The cdc_priority_queue is a struct and functions that provide a priority queue. More...

#include <cdcontainers/common.h>
#include <cdcontainers/status.h>
#include <cdcontainers/tables/ipqueue.h>
#include <assert.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stdlib.h>

Go to the source code of this file.

Data Structures

struct  cdc_priority_queue
 The cdc_priority_queue struct. More...
 

Functions

enum cdc_stat cdc_priority_queue_ctor (const struct cdc_priority_queue_table *table, struct cdc_priority_queue **q, struct cdc_data_info *info)
 Constructs an empty priority queue. More...
 
enum cdc_stat cdc_priority_queue_ctorl (const struct cdc_priority_queue_table *table, struct cdc_priority_queue **q, struct cdc_data_info *info,...)
 Constructs a priority queue, initialized by an arbitrary number of pointers. The last item must be NULL. More...
 
enum cdc_stat cdc_priority_queue_ctorv (const struct cdc_priority_queue_table *table, struct cdc_priority_queue **q, struct cdc_data_info *info, va_list args)
 Constructs a priority queue, initialized by args. The last item must be NULL. More...
 
void cdc_priority_queue_dtor (struct cdc_priority_queue *q)
 Destroys the priority queue. More...
 
static void * cdc_priority_queue_top (struct cdc_priority_queue *q)
 Returns a pointer to the priority queue's top item. This function assumes that the priority queue isn't empty. More...
 
static bool cdc_priority_queue_empty (struct cdc_priority_queue *q)
 Returns true if the priority queue has size 0; otherwise returns false. More...
 
static size_t cdc_priority_queue_size (struct cdc_priority_queue *q)
 Returns the number of items in the priority queue. More...
 
static enum cdc_stat cdc_priority_queue_push (struct cdc_priority_queue *q, void *elem)
 Adds element elem to the priority queue. More...
 
static void cdc_priority_queue_pop (struct cdc_priority_queue *q)
 Removes the top element. More...
 
void cdc_priority_queue_swap (struct cdc_priority_queue *a, struct cdc_priority_queue *b)
 Swaps priority queues a and b. This operation is very fast and never fails. More...
 

Detailed Description

The cdc_priority_queue is a struct and functions that provide a priority queue.

Author
Maksim Andrianov maksi.nosp@m.mand.nosp@m.riano.nosp@m.v1@y.nosp@m.andex.nosp@m..ru

Function Documentation

◆ cdc_priority_queue_ctor()

enum cdc_stat cdc_priority_queue_ctor ( const struct cdc_priority_queue_table table,
struct cdc_priority_queue **  q,
struct cdc_data_info info 
)

Constructs an empty priority queue.

Parameters
table- method table for a particular implementation
q- cdc_priority_queue
info- cdc_data_info
Returns
CDC_STATUS_OK in a successful case or other value indicating an error

◆ cdc_priority_queue_ctorl()

enum cdc_stat cdc_priority_queue_ctorl ( const struct cdc_priority_queue_table table,
struct cdc_priority_queue **  q,
struct cdc_data_info info,
  ... 
)

Constructs a priority queue, initialized by an arbitrary number of pointers. The last item must be NULL.

Parameters
table- method table for a particular implementation
q- cdc_priority_queue
info- cdc_data_info
Returns
CDC_STATUS_OK in a successful case or other value indicating an error

◆ cdc_priority_queue_ctorv()

enum cdc_stat cdc_priority_queue_ctorv ( const struct cdc_priority_queue_table table,
struct cdc_priority_queue **  q,
struct cdc_data_info info,
va_list  args 
)

Constructs a priority queue, initialized by args. The last item must be NULL.

Parameters
table- method table for a particular implementation
q- cdc_priority_queue
info- cdc_data_info
Returns
CDC_STATUS_OK in a successful case or other value indicating an error

◆ cdc_priority_queue_dtor()

void cdc_priority_queue_dtor ( struct cdc_priority_queue q)

Destroys the priority queue.

Parameters
q- cdc_priority_queue

◆ cdc_priority_queue_top()

static void* cdc_priority_queue_top ( struct cdc_priority_queue q)
inlinestatic

Returns a pointer to the priority queue's top item. This function assumes that the priority queue isn't empty.

Parameters
q- cdc_priority_queue
Returns
top item

◆ cdc_priority_queue_empty()

static bool cdc_priority_queue_empty ( struct cdc_priority_queue q)
inlinestatic

Returns true if the priority queue has size 0; otherwise returns false.

Parameters
q- cdc_priority_queue
Returns
true if the pairing heap has size 0; otherwise returns false

◆ cdc_priority_queue_size()

static size_t cdc_priority_queue_size ( struct cdc_priority_queue q)
inlinestatic

Returns the number of items in the priority queue.

Parameters
q- cdc_priority_queue
Returns
size

◆ cdc_priority_queue_push()

static enum cdc_stat cdc_priority_queue_push ( struct cdc_priority_queue q,
void *  elem 
)
inlinestatic

Adds element elem to the priority queue.

Parameters
q- cdc_priority_queue
elem
Returns
CDC_STATUS_OK in a successful case or other value indicating an error

◆ cdc_priority_queue_pop()

static void cdc_priority_queue_pop ( struct cdc_priority_queue q)
inlinestatic

Removes the top element.

Parameters
q- cdc_priority_queue

◆ cdc_priority_queue_swap()

void cdc_priority_queue_swap ( struct cdc_priority_queue a,
struct cdc_priority_queue b 
)

Swaps priority queues a and b. This operation is very fast and never fails.

Parameters
a- cdc_priority_queue
b- cdc_priority_queue