#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()
{
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;
}
}

CMoLineMgr的更多相关文章

随机推荐

  1. 出现ERROR: While executing gem ... (Gem::FilePermissionError)这种错误的解决办法

    重新安装ruby即可解决 brew install ruby

  2. 以应用带动SDN发展(CDN峰会 工信部杨崑)(转)

    以应用带动SDN发展(CDN峰会 工信部杨崑)   SDNAP推荐:这是在亚太全媒体SDN峰会由工信部研究院秘书长杨崑做的关于SDN的一个演讲,本人认为主讲者通过对整 个信息服务体系的精简归纳总结,剥 ...

  3. GitBash、EGit、SourceTree三个Git管理工具对比

    Git管理工具对比(GitBash.EGit.SourceTree) GitBash是采用命令行的方式对版本进行管理,功能最为灵活强大,但是由于需要手动输入希望修改的文件名,所以相对繁琐. EGit是 ...

  4. HTML表格的基本操作

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  5. go中操作json

    package main import ( "encoding/json" "fmt" ) type Server struct { ServerName st ...

  6. Hadoop案例(九)流量汇总案例

    流量汇总程序案例 1.自定义输出 统计手机号耗费的总上行流量.下行流量.总流量(序列化) 1)需求: 统计每一个手机号耗费的总上行流量.下行流量.总流量 2)数据准备 phone_date.txt - ...

  7. 在ubuntu下安装kaldi基本步骤

    注:最近在学习kaldi语音识别工具,在安装过程中遇到了许多问题,在此记录,以备后需. 在一开始,我看了这篇博客(http://blog.topspeedsnail.com/archives/1001 ...

  8. 【BZOJ】4311: 向量(线段树分治板子题)

    题解 我们可以根据点积的定义,垂直于原点到给定点构成的直线作一条直线,从正无穷往下平移,第一个碰到的点就是答案 像什么,上凸壳哇 可是--动态维护上凸壳? 我们可以离线,计算每个点能造成贡献的一个询问 ...

  9. oracle语句练习

    1.查看该公司的员工分布在哪几个部门 select distinct deptno from emp; 2.查看每个部门有哪些岗位 select distinct deptno , job from ...

  10. shell-sed命令详解(转)

    (转自http://blog.csdn.net/wl_fln/article/details/7281986) Sed简介 sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时 ...