circ.h
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:1k
源码类别:

DSP编程

开发平台:

C/C++

  1. /*
  2.  *  Copyright 2003 by Texas Instruments Incorporated.
  3.  *  All rights reserved. Property of Texas Instruments Incorporated.
  4.  *  Restricted rights to use, duplicate or disclose this code are
  5.  *  granted through contract.
  6.  *  
  7.  */
  8. /* "@(#) DDK 1.10.00.23 07-02-03 (ddk-b12)" */
  9. /*
  10.  *  ======== circ.h ========
  11.  */
  12. #ifndef CIRC_
  13. #define CIRC_
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. #define CIRC_BUFSIZE    32      /* must be ^2! */
  18. typedef struct CIRC_Obj {
  19.     Uns         writeIndex;     /* write pointer for the buffer */
  20.     Uns         readIndex;      /* read pointer fro the buffer */
  21.     Uns         charCount;      /* buffer character count */
  22.     Uns         size;
  23.     char        buf[CIRC_BUFSIZE];      /* circular buffer */
  24. } CIRC_Obj, *CIRC_Handle;
  25. extern Void CIRC_new(CIRC_Handle circ);
  26. extern Char CIRC_readChar(CIRC_Handle circ);
  27. extern Void CIRC_writeChar(CIRC_Handle circ, Char c);
  28. #define CIRC_fullCount(circ)            ((circ)->charCount)
  29. #define CIRC_emptyCount(circ)           ((circ)->size - (circ)->charCount)
  30. #define CIRC_nextIndex(circ,index)      (((index) + 1) & ((circ)->size - 1))
  31. #define CIRC_prevIndex(circ,index)      (((index) - 1) & ((circ)->size - 1))
  32. #define CIRC_reset(circ)            {(circ)->charCount = 0; (circ)->readIndex = (circ)->writeIndex; }
  33. #define CIRC_isFull(circ)           ((circ)->charCount == CIRC_BUFSIZE)
  34. #ifdef __cplusplus
  35. }
  36. #endif /* extern "C" */
  37. #endif /* CIRC_ */