forked from xuos/xiuos
APP_Framework/lib/:add queue lib
This commit is contained in:
parent
af345b75fb
commit
6f9be6d790
|
@ -11,4 +11,5 @@ menu "lib"
|
||||||
bool "app select other lib"
|
bool "app select other lib"
|
||||||
endchoice
|
endchoice
|
||||||
source "$APP_DIR/lib/cJSON/Kconfig"
|
source "$APP_DIR/lib/cJSON/Kconfig"
|
||||||
|
source "$APP_DIR/lib/queue/Kconfig"
|
||||||
endmenu
|
endmenu
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
menuconfig LIB_USING_QUEUE
|
||||||
|
bool "USING QUEUE"
|
||||||
|
default n
|
|
@ -0,0 +1,10 @@
|
||||||
|
from building import *
|
||||||
|
import os
|
||||||
|
|
||||||
|
cwd = GetCurrentDir()
|
||||||
|
|
||||||
|
src = Glob('*.c')
|
||||||
|
|
||||||
|
group = DefineGroup('queue', src, depend = ['LIB_USING_QUEUE'], CPPPATH = [cwd])
|
||||||
|
|
||||||
|
Return('group')
|
|
@ -0,0 +1,59 @@
|
||||||
|
#include <queue.h>
|
||||||
|
Status InitQueue(SqQueue *Q)
|
||||||
|
{
|
||||||
|
Q->front=0;
|
||||||
|
Q->rear=0;
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Status ClearQueue(SqQueue *Q)
|
||||||
|
{
|
||||||
|
Q->front=Q->rear=0;
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Status QueueEmpty(SqQueue *Q)
|
||||||
|
{
|
||||||
|
if(Q->front==Q->rear)
|
||||||
|
return TRUE;
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int QueueLength(SqQueue *Q)
|
||||||
|
{
|
||||||
|
return (Q->rear-Q->front+MAXSIZE)%MAXSIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Status GetHead(SqQueue *Q,QElemType *e)
|
||||||
|
{
|
||||||
|
if(Q->front==Q->rear)
|
||||||
|
return ERROR;
|
||||||
|
*e=Q->data[Q->front];
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Status EnQueue(SqQueue *Q,QElemType e)
|
||||||
|
{
|
||||||
|
if ((Q->rear+1)%MAXSIZE == Q->front)
|
||||||
|
return ERROR;
|
||||||
|
Q->data[Q->rear]=e;
|
||||||
|
Q->rear=(Q->rear+1)%MAXSIZE;
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Status DeQueue(SqQueue *Q,QElemType *e)
|
||||||
|
{
|
||||||
|
if (Q->front == Q->rear)
|
||||||
|
return ERROR;
|
||||||
|
*e=Q->data[Q->front];
|
||||||
|
Q->front=(Q->front+1)%MAXSIZE;
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
#ifndef __QUEUE_H__
|
||||||
|
#define __QUEUE_H__
|
||||||
|
#include <stdio.h>
|
||||||
|
#define OK 1
|
||||||
|
#define ERROR 0
|
||||||
|
#define TRUE 1
|
||||||
|
#define FALSE 0
|
||||||
|
#define MAXSIZE 1024
|
||||||
|
|
||||||
|
typedef int Status;
|
||||||
|
typedef int QElemType;
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
int data[MAXSIZE];
|
||||||
|
int front;
|
||||||
|
int rear;
|
||||||
|
}SqQueue;
|
||||||
|
|
||||||
|
Status InitQueue(SqQueue *Q);
|
||||||
|
Status ClearQueue(SqQueue *Q);
|
||||||
|
Status QueueEmpty(SqQueue *Q);
|
||||||
|
Status GetHead(SqQueue *Q,QElemType *e);
|
||||||
|
Status EnQueue(SqQueue *Q,QElemType e);
|
||||||
|
Status DeQueue(SqQueue *Q,QElemType *e);
|
||||||
|
int QueueLength(SqQueue *Q);
|
||||||
|
#endif
|
Loading…
Reference in New Issue