dataqueue.cpp

来自「VC6.0写的短信SP网关源代码, CpTest为测试的代码」· C++ 代码 · 共 93 行

CPP
93
字号
#include "stdafx.h"
#include "DataQueue.h"

#if 0
template <class _Tp>
CDataQueue<_Tp>::CDataQueue()
{
	m_pHead = NULL;
	m_pTail = NULL;
	m_counst = 0;
	m_counLimit = MAX_QUEUE_COUNST;
}

template <class _Tp>
CDataQueue<_Tp>::CDataQueue(int imax)
{
	m_pHead = NULL;
	m_pTail = NULL;
	m_counst = 0;
	m_counLimit = imax;
}

template <class _Tp>
CDataQueue<_Tp>::~CDataQueue()
{
	QUEUE_NODE *ppNode;
	QUEUE_NODE *delNode;
	
	ppNode = m_pHead;
	while (ppNode != NULL)
	{
		delNode = ppNode;
		ppNode = ppNode->next;
		delete delNode;
	}
	
	m_pHead = NULL;
	m_pTail = NULL;
	m_counst = 0;
}
template <class _Tp>
void CDataQueue<_Tp>::WriteDataToQueue(NodeType *snode)
{
	QUEUE_NODE *node;

	if(m_counst >= m_counLimit)
		return;
	
	
	node = new (QUEUE_NODE);

	memcpy(&node->body, snode,sizeof(NodeType));
	node->next = NULL;
	
	if(m_pTail == NULL)
	{
		m_pHead = node;
		m_pTail = node;
	}
	else
	{
		m_pTail->next = node;
		m_pTail = node;
	}

	m_counst++;
}

template <class _Tp>
int CDataQueue<_Tp>::ReadDataFromQueue(NodeType *dnode)
{
	QUEUE_NODE *node;
	if(m_pHead == NULL)
		return -1;
	
	if(m_pHead == m_pTail)
	{
		memcpy(dnode, m_pHead->body, sizeof(NodeType));
		delete m_pHead;
		m_pHead = NULL;
		m_pTail = NULL;
	}else
	{
		memcpy(dnode, m_pHead->body, sizeof(NodeType));
		node = m_pHead;
		m_pHead = m_pHead->next;
		delete node;
	}
	m_counst--;
	return 0;
}

#endif

⌨️ 快捷键说明

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