⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yuqueue.h

📁 一个基于arm的can通讯的源代码 目前还没有使用任何rtos 可以很方便的嵌入到任何rtos中去
💻 H
字号:
// File		:YuQueue.h
// Describe	:a simple queue template
// Author	:exdata
// Ver		:1.02
// Update	:2004.06.19

// ============================== WARNING ==============================
//
// 							DO NOT EDIT THIS FILE!!!
//
// =====================================================================

#ifndef __YUQUEUE_H__
#define __YUQUEUE_H__

#if !defined(__cplusplus)
#error C++ compiler required.
#endif

#include <stddef.h>			// for typedef only

template <class MyType> class CYuQueue
{
public:
	CYuQueue(int MaxSize) : m_pItem(NULL)
	{
		if(MaxSize != 0)
		{
			m_pItem = new MyType[MaxSize];
			if(m_pItem == NULL)
			{
				// debug STOP !!!
				// NOT enough memory for allocat !!!
				while(1);
			}
		}
		
		m_MaxSize = MaxSize;
		m_front = -1;
		m_back = -1;
		m_count = 0;
	}
	
	virtual ~CYuQueue()
	{
		delete []m_pItem;
	}

	bool push_back(MyType &Item)
	{
		if(m_MaxSize == 0 || m_front == ((m_back + 1) % m_MaxSize))	// a%b,if b == 0,div 0 error!
		{
			return false;
		}

		m_back = (m_back + 1) % m_MaxSize;
		*(m_pItem + m_back) = Item;
		m_count++;
	
		return true;
	}

	bool pop_front(MyType &Item)
	{
		if(m_front == m_back)
		{
			return false;
		}

		m_front = (m_front + 1) % m_MaxSize;
		Item = *(m_pItem + m_front);
		m_count--;
		
		return true;
	}
	
	int get_count()
	{
		return m_count;
	}

	int get_MaxSize()
	{
		return m_MaxSize;
	}
	
	void flush()
	{
		m_front = -1;
		m_back = -1;
		m_count = 0;
	}

private:
	MyType *m_pItem;
	int m_MaxSize;
	int m_front;
	int m_back;
	int m_count;
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -