KyosoTechnology / Queue
Committer:
masaaki_makabe
Date:
Mon Nov 22 06:53:43 2021 +0000
Revision:
2:68ce6bdc0714
Parent:
1:07cddbd29781
Child:
3:3b438c482048
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 2:68ce6bdc0714 20 bool PeekAll(char* pvItem){
masaaki_makabe 2:68ce6bdc0714 21 unsigned char *p = m_pnRdIndex;
masaaki_makabe 2:68ce6bdc0714 22 int n = m_iLclCount;
masaaki_makabe 2:68ce6bdc0714 23 if (n > 0){
masaaki_makabe 2:68ce6bdc0714 24 do {
masaaki_makabe 2:68ce6bdc0714 25 memcpy( pvItem, p, m_iSize );
masaaki_makabe 2:68ce6bdc0714 26 pvItem += m_iSize;
masaaki_makabe 2:68ce6bdc0714 27 p += m_iSize;
masaaki_makabe 2:68ce6bdc0714 28 if ( p >= m_pnTail ) p = m_pnHead;
masaaki_makabe 2:68ce6bdc0714 29 } while(--n);
masaaki_makabe 2:68ce6bdc0714 30 return true;
masaaki_makabe 2:68ce6bdc0714 31 }
masaaki_makabe 2:68ce6bdc0714 32 return false;
masaaki_makabe 2:68ce6bdc0714 33 }
masaaki_makabe 1:07cddbd29781 34 bool Peek(int index, void* pvItem){
masaaki_makabe 1:07cddbd29781 35 unsigned char *p = m_pnRdIndex;
masaaki_makabe 1:07cddbd29781 36 if (index < m_iLclCount){
masaaki_makabe 1:07cddbd29781 37 for(int i = 0; i < index; i++){
masaaki_makabe 1:07cddbd29781 38 p += m_iSize;
masaaki_makabe 1:07cddbd29781 39 if ( p >= m_pnTail ) p = m_pnHead;
masaaki_makabe 1:07cddbd29781 40 }
masaaki_makabe 1:07cddbd29781 41 memcpy( pvItem, p, m_iSize );
masaaki_makabe 1:07cddbd29781 42 return true;
masaaki_makabe 1:07cddbd29781 43 }
masaaki_makabe 1:07cddbd29781 44 return false;
masaaki_makabe 1:07cddbd29781 45 }
masaaki_makabe 1:07cddbd29781 46 };
masaaki_makabe 1:07cddbd29781 47
masaaki_makabe 1:07cddbd29781 48 #endif/*QUEUEEX_h*/