#ifndef __E3GLOGOBJECTDB_H__
#define __E3GLOGOBJECTDB_H__
#include "PubCommon\Singleton.h"
#include "PubCommon\MemoryManager.h"
#include "PubCommon.h"
class CMoLineMgr
{
public:
CMoLineMgr(Win32Tools::CMemoryManager*
pMemMgr);
virtual ~
CMoLineMgr();
public:
void AddMemLine(CMemLine*&
pMoLine);
void MoveFirst();
// 移动到第一个
bool GetMoLine(CMoLine*& pMoLine);
// 循环获取 MO
size_t GetSize();
private:
Win32Tools::CMemoryManager*
m_pMemMgr;
CMoLine m_BeginMoLine; // 自下一个开始有效
CMoLine* m_pAddMoLine;
// 添加 MO 的专用游标
CMoLine* m_pReadMoLine;
// 读取 MO 的专用游标
size_t m_iTableCnt;
};
#endif
#include
"stdafx.h"
#include "MoLineMgr.h"
CMoLineMgr::CMoLineMgr(Win32Tools::CMemoryManager*
pMemMgr)
: m_pMemMgr(pMemMgr)
, m_pAddMoLine(NULL)
, m_pReadMoLine(NULL)
, m_iTableCnt(0)
{
m_pAddMoLine = &
m_BeginMoLine;
}
CMoLineMgr::~
CMoLineMgr()
{
}
void CMoLineMgr::AddMemLine(CMemLine*&
pMemLine)
{
if(pMemLine ==
NULL)
return;
CMoLine* pNew = (CMoLine*)m_pMemMgr->GetMemory(
sizeof(CMoLine));
pNew =
new (pNew) CMoLine;
pNew->m_pMemLine =
pMemLine;
m_pAddMoLine->m_pNextMoLine =
pNew;
m_pAddMoLine =
pNew;
++
m_iTableCnt;
}
size_t CMoLineMgr::GetSize(void)
{
return m_iTableCnt;
}
void CMoLineMgr::MoveFirst()
{
// 移动到第一个
m_pReadMoLine = &
m_BeginMoLine;
}
bool CMoLineMgr::GetMoLine( CMoLine*&
pMoLine )
{
// 循环获取 MO
if(m_pReadMoLine->m_pNextMoLine ==
NULL)
{
pMoLine =
NULL;
return false;
}
else
{
pMoLine = m_pReadMoLine->
m_pNextMoLine;
m_pReadMoLine = m_pReadMoLine->
m_pNextMoLine;
return true;
}
}
转载于:https://www.cnblogs.com/hongjiumu/p/3588270.html
相关资源:各显卡算力对照表!