Sha256: 00493237de05ef480b7211cf05b16a22d8f52046fba00aa37ce217d86a91e9a8

Contents?: true

Size: 1.23 KB

Versions: 2

Compression:

Stored size: 1.23 KB

Contents

#ifndef PRIORITY_QUEUE_H
#define PRIORITY_QUEUE_H

#include <ruby.h>
#include <errors.h>
#include <expand_capacity.h>

typedef unsigned long ITEM;
typedef unsigned int PRIORITY;
static const PRIORITY PRIORITY_MAX = UINT_MAX;
static const ITEM NULL_ITEM = 0;

struct PrioritizedItemStruct;
typedef struct PrioritizedItemStruct* PrioritizedItem;

typedef struct PrioritizedItemStruct {
  ITEM item;
  PRIORITY priority;
} PrioritizedItemStruct;

//////////////////////////////////////////////////////////////////////////////////////

struct PriorityQueueStruct;
typedef struct PriorityQueueStruct* PriorityQueue;

typedef struct PriorityQueueStruct {
  PrioritizedItem *items;
  unsigned long capacity;
  unsigned long size;
} PriorityQueueStruct;

//////////////////////////////////////////////////////////////////////////////////////

PriorityQueue make_priority_queue();
#define expand_priority_queue(pq) expand_capacity(PrioritizedItem, pq->items, pq->capacity, 256, "Priority Queue")
void free_priority_queue(PriorityQueue pq);
bool priority_queue_is_empty(PriorityQueue pq);
void priority_queue_push(PriorityQueue pq, ITEM object, PRIORITY priority);
ITEM priority_queue_pop(PriorityQueue pq);
PRIORITY priority_sum(PRIORITY p1, PRIORITY p2);

#endif

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dijkstra_fast-1.5.3 ext/dijkstra_fast/priority_queue.h
dijkstra_fast-1.5.2 ext/dijkstra_fast/priority_queue.h