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