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