#ifndef CALQ #define CALQ #define FALSE (0) /* boolean False */ #define TRUE (1) /* boolean True */ /* ** GLOBAL TYPES */ struct BucketEntry; struct twopriority { double priority; /* priority (timeStamp) of entry */ int cid; }; struct event { double evt_time; struct event *next; }; typedef struct BucketEntry { struct twopriority p; struct event *event; /* ptr to associated eventStruct */ struct BucketEntry * next; /* ptr to next entry in current bucket */ } bucketEntry; typedef struct CalendarHdr { bucketEntry * bp; int eventCnt; } calendarHdr; /* ** Routines Exported by calQ package */ extern void enqueue (double,int ,struct event*); extern struct event* dequeue(); extern void calInit(int,int,int,double); extern bucketEntry *bfreelist; extern void sample(); extern void samplei(); #define BALLOC(b) \ do {\ if (bfreelist) {\ (b) = bfreelist;\ bfreelist = (b)->next;\ } else\ (b) = (bucketEntry *)malloc(sizeof(*(b)));\ } while (0) #endif #define BFREE(b) \ do { \ (b)->next = bfreelist;\ bfreelist = (b);\ } while (0)