create queue template use c

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

create queue template use c

create queue template use c

/*

* Queue.h

*

*  Created on: May 28, 2015

*      Author: ShuLizhong

*/

 

 

#ifndef QUEUE_H_

#define QUEUE_H_

#ifdef _cplusplus

extern "C" {

#endif

/*If you want to change the queue type(QUEUE_TYPE) and queue max size(QUEUE_MAX_SIZE),

  you should define it at front of include queue.h file.

eg:

******in xxx.h file*****

code****

#define QUEUE_TYPE   Other type(unsigned int)

#define QUEUE_MAX_SIZE   Other size(100)

#include "qeue.h"

code****

*/

#ifndef QUEUE_TYPE

#define QUEUE_TYPE unsigned char

#endif

#ifndef QUEUE_MAX_SIZE

#define QUEUE_MAX_SIZE 100

#endif

#define bool unsigned int

typedef enum {

  OK,

  FULL,

  EMPTY

}QUEUE_STATUS;

typedef struct {

  unsigned int tail;

  unsigned int head;

  unsigned int size;

  unsigned int length;

  QUEUE_TYPE data[QUEUE_MAX_SIZE];

}Queue_tag,*pQueue_tag;

 

 

__inline void InitQueue(pQueue_tag q)

{

  q->tail = q->head = q->size = 0;

  q->length = QUEUE_MAX_SIZE;

}

__inline  QUEUE_STATUS EnQueue(pQueue_tag q,QUEUE_TYPE data)

{

  if(q->size++ == QUEUE_MAX_SIZE)

  return FULL;

  q->data[q->tail] = data;

  q->tail = (q->tail+1) % QUEUE_MAX_SIZE;

  return OK;

}

__inline QUEUE_STATUS DeQueue(pQueue_tag q, QUEUE_TYPE *data)

{

  if(q->size-- == 0)

  return EMPTY;

  *data = q->data[q->head];

  q->head = (q->head+1) % QUEUE_MAX_SIZE;

  return OK;

}

__inline bool IsQueueEmpty(pQueue_tag q)

{

  return q->size == 0;

}

__inline bool IsQueueFull(pQueue_tag q)

{

  return q->size == QUEUE_MAX_SIZE;

}

__inline unsigned int GetQueueSize(pQueue_tag q)

{

  return q->size;

}

__inline unsigned int GetQueueLength(pQueue_tag  q)

{

  return q->length;

}

/*__inline unsigned int DeMoreBytesFromQueue(pQueue_tag q,QUEUE_TYPE *data,unsigned int len)

{

  unsigned int i = 0;

  len++;

  return 0;

}*/

 

 

#ifdef _cplusplus

}

#endif

#endif /* QUEUE_H_ */

标签 (1)
%3CLINGO-SUB%20id%3D%22lingo-sub-1121071%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E5%88%9B%E5%BB%BA%E9%98%9F%E5%88%97%E6%A8%A1%E6%9D%BF%E4%BD%BF%E7%94%A8%20c%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1121071%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%2F*%3C%2FP%3E%3CP%3E%20*%20%E9%98%9F%E5%88%97.h%3C%2FP%3E%3CP%3E%20*%3C%2FP%3E%3CP%3E%20*%20%E5%88%9B%E5%BB%BA%E6%97%A5%E6%9C%9F%EF%BC%9A2015%E5%B9%B45%E6%9C%8828%E6%97%A5%3C%2FP%3E%3CP%3E%20*%20%E4%BD%9C%E8%80%85%EF%BC%9A%E8%88%92%E7%AB%8B%E5%BF%A0%3C%2FP%3E%3CP%3E%20*%2F%3C%2FP%3E%3CP%20style%3D%22min-height%3A%208pt%3B%20padding%3A%200px%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%20style%3D%22min-height%3A%208pt%3B%20padding%3A%200px%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%23ifndef%20QUEUE_H_%3C%2FP%3E%3CP%3E%23%E5%AE%9A%E4%B9%89%20QUEUE_H_%3C%2FP%3E%3CP%3E%23ifdef%20_cplusplus%3C%2FP%3E%3CP%3Eextern%20%22C%22%20%7B%3C%2FP%3E%3CP%3E%23endif%3C%2FP%3E%3CP%3E%2F*%E5%A6%82%E6%9E%9C%E8%A6%81%E6%9B%B4%E6%94%B9%E9%98%9F%E5%88%97%E7%B1%BB%E5%9E%8B%EF%BC%88QUEUE_TYPE%EF%BC%89%E5%92%8C%E9%98%9F%E5%88%97%E6%9C%80%E5%A4%A7%E5%A4%A7%E5%B0%8F%EF%BC%88QUEUE_MAX_SIZE%EF%BC%89%EF%BC%8C%3C%2FP%3E%3CP%3E%E4%BD%A0%E5%BA%94%E8%AF%A5%E5%9C%A8%20include%20queue.h%20%E5%89%8D%E9%9D%A2%E5%AE%9A%E4%B9%89%E5%AE%83%E6%96%87%E4%BB%B6%E3%80%82%3C%2FP%3E%3CP%3Eeg%3A%3C%2FP%3E%3CP%3E******%E5%9C%A8xxx.h%E6%96%87%E4%BB%B6%E4%B8%AD*****%3C%2FP%3E%3CP%3E%E4%BB%A3%E7%A0%81****%3C%2FP%3E%3CP%3E%23define%20QUEUE_TYPE%20%E5%85%B6%E4%BB%96%E7%B1%BB%E5%9E%8B%EF%BC%88%E6%97%A0%E7%AC%A6%E5%8F%B7%E6%95%B4%E6%95%B0%EF%BC%89%3C%2FP%3E%3CP%3E%23define%20QUEUE_MAX_SIZE%20%E5%85%B6%E4%BB%96%E5%A4%A7%E5%B0%8F(100)%3C%2FP%3E%3CP%3E%23include%20%22qeue.h%22%3C%2FP%3E%3CP%3E%E4%BB%A3%E7%A0%81****%3C%2FP%3E%3CP%3E*%2F%3C%2FP%3E%3CP%3E%23ifndef%20QUEUE_TYPE%3C%2FP%3E%3CP%3E%23%E5%AE%9A%E4%B9%89%20QUEUE_TYPE%20%E6%97%A0%E7%AC%A6%E5%8F%B7%E5%AD%97%E7%AC%A6%20%3C%2FP%3E%3CP%3E%23endif%3C%2FP%3E%3CP%3E%23ifndef%20QUEUE_MAX_SIZE%3C%2FP%3E%3CP%3E%23%E5%AE%9A%E4%B9%89%20QUEUE_MAX_SIZE%20100%3C%2FP%3E%3CP%3E%23endif%3C%2FP%3E%3CP%3E%23%E5%AE%9A%E4%B9%89%E5%B8%83%E5%B0%94%E6%97%A0%E7%AC%A6%E5%8F%B7%E6%95%B4%E6%95%B0%3C%2FP%3E%3CP%3Etypedef%20enum%20%7B%3C%2FP%3E%3CP%3E%E5%A5%BD%E7%9A%84%EF%BC%8C%3C%2FP%3E%3CP%3E%E6%BB%A1%E7%9A%84%EF%BC%8C%3C%2FP%3E%3CP%3E%E7%A9%BA%E7%9A%84%3C%2FP%3E%3CP%3E%7DQUEUE_STATUS%3B%3C%2FP%3E%3CP%3Etypedef%20struct%20%7B%3C%2FP%3E%3CP%3E%E6%97%A0%E7%AC%A6%E5%8F%B7%E6%95%B4%E6%95%B0%E5%B0%BE%E9%83%A8%EF%BC%9B%3C%2FP%3E%3CP%3E%E6%97%A0%E7%AC%A6%E5%8F%B7%E6%95%B4%E6%95%B0%E5%A4%B4%EF%BC%9B%3C%2FP%3E%3CP%3E%E6%97%A0%E7%AC%A6%E5%8F%B7%E6%95%B4%E6%95%B0%E5%A4%A7%E5%B0%8F%EF%BC%9B%3C%2FP%3E%3CP%3E%E6%97%A0%E7%AC%A6%E5%8F%B7%E6%95%B4%E6%95%B0%E9%95%BF%E5%BA%A6%EF%BC%9B%3C%2FP%3E%3CP%3E%26nbsp%3B%20QUEUE_TYPE%20data%5BQUEUE_MAX_SIZE%5D%3B%3C%2FP%3E%3CP%3E%7DQueue_tag%2C*pQueue_tag%3B%3C%2FP%3E%3CP%20style%3D%22min-height%3A%208pt%3B%20padding%3A%200px%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%20style%3D%22min-height%3A%208pt%3B%20padding%3A%200px%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%3E__inline%20void%20InitQueue(pQueue_tag%20q)%3C%2FP%3E%3CP%3E%7B%3C%2FP%3E%3CP%3Eq-%26gt%3B%E5%B0%BE%E9%83%A8%20%3D%20q-%26gt%3B%E5%A4%B4%E9%83%A8%20%3D%20q-%26gt%3B%E5%A4%A7%E5%B0%8F%20%3D%200%3B%3C%2FP%3E%3CP%3Eq-%26gt%3B%E9%95%BF%E5%BA%A6%20%3D%20QUEUE_MAX_SIZE%3B%3C%2FP%3E%3CP%3E%7D%3C%2FP%3E%3CP%3E__inline%26nbsp%3B%20QUEUE_STATUS%20EnQueue(pQueue_tag%20q%2CQUEUE_TYPE%20data)%3C%2FP%3E%3CP%3E%7B%3C%2FP%3E%3CP%3E%E5%A6%82%E6%9E%9C%EF%BC%88q-%26gt%3Bsize%2B%2B%20%3D%3D%20QUEUE_MAX_SIZE%EF%BC%89%3C%2FP%3E%3CP%3E%E8%BF%94%E5%9B%9E%20FULL%EF%BC%9B%3C%2FP%3E%3CP%3E%26nbsp%3B%20q-%26gt%3Bdata%5Bq-%26gt%3Btail%5D%20%3D%20data%3B%3C%2FP%3E%3CP%3Eq-%26gt%3B%E5%B0%BE%E9%83%A8%20%3D%20(q-%26gt%3B%E5%B0%BE%E9%83%A8%2B1)%20%25%20%E9%98%9F%E5%88%97%E6%9C%80%E5%A4%A7%E5%A4%A7%E5%B0%8F%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20return%20OK%3B%3C%2FP%3E%3CP%3E%7D%3C%2FP%3E%3CP%3E__inline%20QUEUE_STATUS%20DeQueue(pQueue_tag%20q%2C%20QUEUE_TYPE%20*data)%3C%2FP%3E%3CP%3E%7B%3C%2FP%3E%3CP%3E%E5%A6%82%E6%9E%9C%EF%BC%88q-%26gt%3Bsize--%20%3D%3D%200%EF%BC%89%3C%2FP%3E%3CP%3E%26nbsp%3B%20return%20EMPTY%3B%3C%2FP%3E%3CP%3E*%E6%95%B0%E6%8D%AE%20%3D%20q-%26gt%3B%E6%95%B0%E6%8D%AE%5Bq-%26gt%3B%E5%A4%B4%5D%3B%3C%2FP%3E%3CP%3Eq-%26gt%3Bhead%20%3D%20(q-%26gt%3Bhead%2B1)%20%25%20%E9%98%9F%E5%88%97%E6%9C%80%E5%A4%A7%E5%A4%A7%E5%B0%8F%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20return%20OK%3B%3C%2FP%3E%3CP%3E%7D%3C%2FP%3E%3CP%3E__inline%20bool%20IsQueueEmpty%EF%BC%88pQueue_tag%20q%EF%BC%89%3C%2FP%3E%3CP%3E%7B%3C%2FP%3E%3CP%3E%E8%BF%94%E5%9B%9E%20q-%26gt%3Bsize%20%3D%3D%200%3B%3C%2FP%3E%3CP%3E%7D%3C%2FP%3E%3CP%3E__inline%20bool%20IsQueueFull%EF%BC%88pQueue_tag%20q%EF%BC%89%3C%2FP%3E%3CP%3E%7B%3C%2FP%3E%3CP%3E%26nbsp%3B%20return%20q-%26gt%3Bsize%20%3D%3D%20QUEUE_MAX_SIZE%3B%3C%2FP%3E%3CP%3E%7D%3C%2FP%3E%3CP%3E__inline%20%E6%97%A0%E7%AC%A6%E5%8F%B7%E6%95%B4%E6%95%B0%20GetQueueSize%EF%BC%88pQueue_tag%20q%EF%BC%89%3C%2FP%3E%3CP%3E%7B%3C%2FP%3E%3CP%3E%E8%BF%94%E5%9B%9E%20q-%26gt%3Bsize%3B%3C%2FP%3E%3CP%3E%7D%3C%2FP%3E%3CP%3E__inline%20%E6%97%A0%E7%AC%A6%E5%8F%B7%E6%95%B4%E6%95%B0%20GetQueueLength%EF%BC%88pQueue_tag%20q%EF%BC%89%3C%2FP%3E%3CP%3E%7B%3C%2FP%3E%3CP%3E%E8%BF%94%E5%9B%9E%20q-%26gt%3Blength%3B%3C%2FP%3E%3CP%3E%7D%3C%2FP%3E%3CP%3E%2F*__inline%20unsigned%20int%20DeMoreBytesFromQueue%EF%BC%88pQueue_tag%20q%EF%BC%8CQUEUE_TYPE%20*data%EF%BC%8Cunsigned%20int%20len%EF%BC%89%3C%2FP%3E%3CP%3E%7B%3C%2FP%3E%3CP%3E%E6%97%A0%E7%AC%A6%E5%8F%B7%E6%95%B4%E6%95%B0%20i%20%3D%200%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20len%2B%2B%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20return%200%3B%3C%2FP%3E%3CP%3E%7D*%2F%3C%2FP%3E%3CP%20style%3D%22min-height%3A%208pt%3B%20padding%3A%200px%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%20style%3D%22min-height%3A%208pt%3B%20padding%3A%200px%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%23ifdef%20_cplusplus%3C%2FP%3E%3CP%3E%7D%3C%2FP%3E%3CP%3E%23endif%3C%2FP%3E%3CP%3E%23endif%20%2F*%20QUEUE_H_%20*%2F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1121071%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3E%E6%A6%82%E8%BF%B0%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
无评分
版本历史
最后更新:
‎06-01-2015 06:00 PM
更新人: