KyosoTechnology / Queue
Committer:
masaaki_makabe
Date:
Mon Nov 22 08:15:36 2021 +0000
Revision:
3:3b438c482048
Parent:
2:68ce6bdc0714
modified

Who changed what in which revision?

UserRevisionLine numberNew contents of line
masaaki_makabe 1:07cddbd29781 1 /**
masaaki_makabe 1:07cddbd29781 2 ******************************************************************************
masaaki_makabe 1:07cddbd29781 3 * @file : queueEx.h
masaaki_makabe 1:07cddbd29781 4 * @brief : queue expansion
masaaki_makabe 1:07cddbd29781 5 ******************************************************************************
masaaki_makabe 1:07cddbd29781 6 * @attention
masaaki_makabe 1:07cddbd29781 7 *
masaaki_makabe 1:07cddbd29781 8 ******************************************************************************
masaaki_makabe 1:07cddbd29781 9 */
masaaki_makabe 1:07cddbd29781 10 #ifndef QUEUEEX_h
masaaki_makabe 1:07cddbd29781 11 #define QUEUEEX_h
masaaki_makabe 1:07cddbd29781 12
masaaki_makabe 1:07cddbd29781 13 #include "queue.h"
masaaki_makabe 1:07cddbd29781 14
masaaki_makabe 1:07cddbd29781 15 class QueueEx : public Queue{
masaaki_makabe 1:07cddbd29781 16 private:
masaaki_makabe 1:07cddbd29781 17 public:
masaaki_makabe 1:07cddbd29781 18 QueueEx(int iSize, int iCount) : Queue(iSize, iCount){
masaaki_makabe 1:07cddbd29781 19 }
masaaki_makabe 3:3b438c482048 20 bool PeekAll(void* pvItem){
masaaki_makabe 3:3b438c482048 21 unsigned char *pv = (unsigned char*)pvItem;
masaaki_makabe 2:68ce6bdc0714 22 unsigned char *p = m_pnRdIndex;
masaaki_makabe 2:68ce6bdc0714 23 int n = m_iLclCount;
masaaki_makabe 2:68ce6bdc0714 24 if (n > 0){
masaaki_makabe 2:68ce6bdc0714 25 do {
masaaki_makabe 3:3b438c482048 26 memcpy( pv, p, m_iSize );
masaaki_makabe 3:3b438c482048 27 pv += m_iSize;
masaaki_makabe 2:68ce6bdc0714 28 p += m_iSize;
masaaki_makabe 2:68ce6bdc0714 29 if ( p >= m_pnTail ) p = m_pnHead;
masaaki_makabe 2:68ce6bdc0714 30 } while(--n);
masaaki_makabe 2:68ce6bdc0714 31 return true;
masaaki_makabe 2:68ce6bdc0714 32 }
masaaki_makabe 2:68ce6bdc0714 33 return false;
masaaki_makabe 2:68ce6bdc0714 34 }
masaaki_makabe 1:07cddbd29781 35 bool Peek(int index, void* pvItem){
masaaki_makabe 1:07cddbd29781 36 unsigned char *p = m_pnRdIndex;
masaaki_makabe 1:07cddbd29781 37 if (index < m_iLclCount){
masaaki_makabe 1:07cddbd29781 38 for(int i = 0; i < index; i++){
masaaki_makabe 1:07cddbd29781 39 p += m_iSize;
masaaki_makabe 1:07cddbd29781 40 if ( p >= m_pnTail ) p = m_pnHead;
masaaki_makabe 1:07cddbd29781 41 }
masaaki_makabe 1:07cddbd29781 42 memcpy( pvItem, p, m_iSize );
masaaki_makabe 1:07cddbd29781 43 return true;
masaaki_makabe 1:07cddbd29781 44 }
masaaki_makabe 1:07cddbd29781 45 return false;
masaaki_makabe 1:07cddbd29781 46 }
masaaki_makabe 1:07cddbd29781 47 };
masaaki_makabe 1:07cddbd29781 48
masaaki_makabe 1:07cddbd29781 49 #endif/*QUEUEEX_h*/