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