1/*	$NetBSD: ntp_data_structures.h,v 1.1.1.1 2009/12/13 16:54:50 kardel Exp $	*/
2
3/* ntp_data_structures.h
4 *
5 * This file contains the structures and function prototypes for the data
6 * structures used by the ntp configuration code and the discrete event
7 * simulator.
8 *
9 * Written By: Sachin Kamboj
10 *             University of Delaware
11 *             Newark, DE 19711
12 * Copyright (c) 2006
13 */
14
15#ifndef __NTP_DATA_STRUCTURES_H__
16#define __NTP_DATA_STRUCTURES_H__
17
18
19/* Structures for storing a priority queue
20 * ---------------------------------------
21 */
22
23typedef struct node {
24	union {
25		struct node *next;
26		double d;
27	} nodeu;
28} node;
29#define node_next nodeu.next
30
31typedef struct Queue {
32    int (*get_order)(void *, void *);
33    node *front;
34    int no_of_elements;
35} queue;
36
37
38/* FUNCTION PROTOTYPES
39 * -------------------
40 */
41queue *create_priority_queue(int (*get_order)(void *, void *));
42void destroy_queue(queue *my_queue);
43void *get_node(size_t size);
44void free_node(void *my_node);
45void *next_node(void *my_node);
46int empty(queue *my_queue);
47void *queue_head(queue *my_queue);
48queue *enqueue(queue *my_queue, void *my_node);
49void *dequeue(queue *my_queue);
50int get_no_of_elements(queue *my_queue);
51void append_queue(queue *q1, queue *q2);
52int get_fifo_order(void *el1, void *el2);
53queue *create_queue(void);
54
55#endif
56