|
//============================
//Queue containers
//Design Date : 2021 - 8 - 21
//Designer : Tengye
//============================
#ifndef __cQueue_H
#define __cQueue_H
#if 1// data type example
typedef unsigned char QUEUEDATATYPE;
#define MAXSIZE 128
typedef struct
{
QUEUEDATATYPE data[MAXSIZE + 1];
int front;
int rear;
int size;
}tyu8Queue, *mtyu8Queue;
#endif
#define InitQueue(queue){\
queue.front = queue.rear=0;\
queue.size = sizeof(queue.data)/sizeof(queue.data[0]);\
}
#define PushQueue(queue,item){\
if( (queue.rear +1)%queue.size==queue.front)\
{\
}else\
{\
queue.data[queue.rear]= item;\
queue.rear = (queue.rear+1)%queue.size;\
}}
#define PopQueue(queue,item){\
if(queue.rear == queue.front)\
{\
}else\
{\
item= queue.data[queue.front];\
queue.front = (queue.front+1)%queue.size;\
}}
#define FrontQueue(queue,item){\
if(queue.rear == queue.front)\
{\
}else\
{\
item= queue.data[queue.front];\
}}
#define QueueDataCount(queue,count){\
count = (queue.rear - queue.front + queue.size ) % queue.size;\
}
#define QueueEmpty(queue)\
(queue.rear == queue.front)\
#define QueueFull(queue)\
((queue.rear +1)%queue.size==queue.front)\
#define QueueClear(queue){\
queue.front = queue.rear=0;}
#endif
|
|