56 lines
1.3 KiB
C
56 lines
1.3 KiB
C
/* $NetBSD: ntp_data_structures.h,v 1.1.1.1 2009/12/13 16:54:50 kardel Exp $ */
|
|
|
|
/* ntp_data_structures.h
|
|
*
|
|
* This file contains the structures and function prototypes for the data
|
|
* structures used by the ntp configuration code and the discrete event
|
|
* simulator.
|
|
*
|
|
* Written By: Sachin Kamboj
|
|
* University of Delaware
|
|
* Newark, DE 19711
|
|
* Copyright (c) 2006
|
|
*/
|
|
|
|
#ifndef __NTP_DATA_STRUCTURES_H__
|
|
#define __NTP_DATA_STRUCTURES_H__
|
|
|
|
|
|
/* Structures for storing a priority queue
|
|
* ---------------------------------------
|
|
*/
|
|
|
|
typedef struct node {
|
|
union {
|
|
struct node *next;
|
|
double d;
|
|
} nodeu;
|
|
} node;
|
|
#define node_next nodeu.next
|
|
|
|
typedef struct Queue {
|
|
int (*get_order)(void *, void *);
|
|
node *front;
|
|
int no_of_elements;
|
|
} queue;
|
|
|
|
|
|
/* FUNCTION PROTOTYPES
|
|
* -------------------
|
|
*/
|
|
queue *create_priority_queue(int (*get_order)(void *, void *));
|
|
void destroy_queue(queue *my_queue);
|
|
void *get_node(size_t size);
|
|
void free_node(void *my_node);
|
|
void *next_node(void *my_node);
|
|
int empty(queue *my_queue);
|
|
void *queue_head(queue *my_queue);
|
|
queue *enqueue(queue *my_queue, void *my_node);
|
|
void *dequeue(queue *my_queue);
|
|
int get_no_of_elements(queue *my_queue);
|
|
void append_queue(queue *q1, queue *q2);
|
|
int get_fifo_order(void *el1, void *el2);
|
|
queue *create_queue(void);
|
|
|
|
#endif
|