/* semplici primitive per la gestione di una coda utilizzando un array. Il
* tipo di dati gestito e' definito in queue.h */
#include<stdio.h>
#include<stdlib.h>
#include"queue.h"
#define ERR 1
#define OK 0
static queue_type *q;
static unsigned int head=-1,tail=-1,N;
/* inizializzazione */
int initQUEUE(unsigned int nmax){
N=nmax+1;
head=0;
tail=0;
return (q=malloc(sizeof(queue_type)*nmax))==NULL?-ERR:OK;
}
/* controlla se e' vuoto */
unsigned int isQUEUEempty(void){
return head%N==tail;
}
/* preleva un elemento dalla coda */
queue_type getQUEUE(void){
head%=N;
return q[head++];
}
/* mette un elemento in testa alla coda */
void putQUEUE(queue_type a){
q[tail++]=a;
tail%=N;
}
void destroyQUEUE(void){
free(q);
}