/*******************************************************************************
*
*
* File:        tau_queue.h
* Description  tau 队列操作
* Version      V0.1
* Date         2021-02-25
* Author       lzy
 *******************************************************************************/
#ifndef _TAU_QUEUE_H
#define _TAU_QUEUE_H

#include <stdio.h>
#include <stdlib.h>

typedef struct node_t
{
    void *data;
    struct node_t *next;
} node_t;

typedef node_t node;

typedef struct
{
    node *next;
    node *tail;
    int count;
    int max_size;
} tau_queue_t;

//申请node
node *tau_new_node(void *data);
//释放node
void tau_free_node(node *qn);
//申请队列
tau_queue_t *tau_new_queue(int max_size);
//释放队列
void tau_free_queue(tau_queue_t *q);
//入列 返回0 为失败，1为成功
int tau_queue_push(tau_queue_t *q, void *data);
//出列
void *tau_queue_pop(tau_queue_t *q);
//获取队列size
int tau_queue_size(tau_queue_t *q);
//检查队列是否为空
int tau_queue_empty(tau_queue_t *q);
//检查队列是否满了
int tau_queue_full(tau_queue_t *q);



#endif

