mirror of
https://gitee.com/moluo-tech/CodeBrick.git
synced 2025-02-06 04:48:22 +08:00
98 lines
2.7 KiB
C
98 lines
2.7 KiB
C
/*******************************************************************************
|
||
* @brief <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>(queue link)<29><><EFBFBD><EFBFBD>
|
||
*
|
||
* Change Logs
|
||
* Date Author Notes
|
||
* 2016-06-24 Morro <20><>ʼ<EFBFBD><CABC>
|
||
* 2018-03-17 Morro <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD>Ԫ<EFBFBD><D4AA>ͳ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD>
|
||
*******************************************************************************/
|
||
#ifndef _QLINK_H_
|
||
#define _QLINK_H_
|
||
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
#include <stddef.h>
|
||
|
||
/*<2A><>ʽ<EFBFBD><CABD><EFBFBD>н<EFBFBD><D0BD><EFBFBD> ---------------------------------------------------------------*/
|
||
struct qlink_node {
|
||
struct qlink_node *next;
|
||
};
|
||
|
||
/*<2A><>ʽ<EFBFBD><CABD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD> -------------------------------------------------------------*/
|
||
struct qlink {
|
||
unsigned int count;
|
||
struct qlink_node *front, *rear;
|
||
};
|
||
|
||
/*******************************************************************************
|
||
* @brief <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||
* @param[in] q - <20><><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>
|
||
* @return none
|
||
******************************************************************************/
|
||
static inline void qlink_init(struct qlink *q)
|
||
{
|
||
q->front = q->rear= NULL;
|
||
q->count = 0;
|
||
}
|
||
|
||
/*******************************************************************************
|
||
* @brief <20><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
|
||
* @param[in] q - <20><><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>
|
||
* @return nond
|
||
******************************************************************************/
|
||
static inline void qlink_put(struct qlink *q, struct qlink_node *n)
|
||
{
|
||
if (q->count == 0)
|
||
q->front = n;
|
||
else
|
||
q->rear->next = n;
|
||
q->rear = n;
|
||
n->next = NULL;
|
||
q->count++;
|
||
}
|
||
|
||
/*******************************************************************************
|
||
* @brief Ԥ<><D4A4><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>(<28><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><D7BD><EFBFBD>)
|
||
* @param[in] q - <20><><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>
|
||
* @return nond
|
||
******************************************************************************/
|
||
static inline struct qlink_node *qlink_peek(struct qlink *q)
|
||
{
|
||
return q->front;
|
||
}
|
||
|
||
/*******************************************************************************
|
||
* @brief <20><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>
|
||
* @param[in] q - <20><><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>
|
||
* @return nond
|
||
******************************************************************************/
|
||
static inline struct qlink_node *qlink_get(struct qlink *q)
|
||
{
|
||
struct qlink_node *n;
|
||
if (q->count == 0)
|
||
return NULL;
|
||
n = q->front;
|
||
q->front = q->front->next;
|
||
q->count--;
|
||
return n;
|
||
}
|
||
|
||
/*******************************************************************************
|
||
* @brief <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
|
||
* @param[in] q - <20><><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>
|
||
* @return nond
|
||
******************************************************************************/
|
||
static inline int qlink_count(struct qlink *q)
|
||
{
|
||
return q->count;
|
||
}
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif
|