#include "stringops.h"
#include "move.h"
#include <stdio.h>
void room_queue_add (room_queue *rq, room *r, int size)
{
room_queue_elt *new, *dead;
#ifdef FUNCTIONS
puts ("**room_queue_add");
#endif
new = allocate (room_queue_elt);
new->room = r;
new->number = rq->number_at;
(rq->number_at)++;
new->next = NULL;
if (rq->tail != NULL) rq->tail->next = new;
else rq->head = new;
rq->tail = new;
(rq->size)++;
while (rq->size > size)
{
dead = rq->head;
rq->head = rq->head->next;
free (dead);
(rq->size)--;
}
}
static void room_queue_elt_burn (room_queue_elt *rqe)
{
#ifdef FUNCTIONS
puts ("<room_queue_elt_burn>");
#endif
if (rqe != NULL)
{
room_queue_elt_burn (rqe->next);
free (rqe);
}
}
void room_queue_burn (room_queue *rq)
{
#ifdef FUNCTIONS
puts ("**room_queue_burn");
#endif
room_queue_elt_burn (rq->head);
free (rq);
}
int room_queue_test (room_queue *rq, room *r)
{
room_queue_elt *scan;
#ifdef FUNCTIONS
puts ("**room_queue_test");
#endif
for (scan = rq->head; scan != NULL; scan = scan->next)
{
if (scan->room == r) return 1;
}
return 0;
}
int room_queue_num (room_queue *rq, room *r)
{
room_queue_elt *scan;
#ifdef FUNCTIONS
puts ("**room_queue_num");
#endif
for (scan = rq->head; scan != NULL; scan = scan->next)
{
if (scan->room == r) return scan->number;
}
return 0;
}