#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. C/++——C语言备忘录

    1. static变量初始化 在C中,由static修饰的静态变量在没有显式初始化时,将会被初始化为0(对于指针是NULL) 参考:https://en.wikipedia.org/wiki/Unin ...

  2. /etc/issue 与 /etc/issue.net 文件,telnet登陆前的显示

    在使用文本设备(关于文本设备的例子,见下面的说明)登录Linux系统之前,系统会显示一条被称作“issue”的消息: 若是通过本地文本设备(如本地终端,本地虚拟控制台等)登录,则该信息存放与/etc/ ...

  3. strcpy、memcpy和memset之间的区别

    今天刷题时遇到了这个问题,记录一下. strcpy比较简单,就是拷贝字符串,遇到'\0'时结束拷贝. memcpy用来做内存拷贝,可以拷贝任何数据类型的对象并指定拷贝数据的长度:char a[100] ...

  4. Percona XtraDB Cluster(PXC)-高可用架构设计说明

    Mycat+PXC高可用集群 一.架构图 架构说明: 1.mysql 集群高可用部分: l 针对业务场景选用Percona XtraDB Cluter(PXC)复制集群.两个片集群 PXC-dataN ...

  5. LeetCode741. Cherry Pickup

    https://leetcode.com/problems/cherry-pickup/description/ In a N x N grid representing a field of che ...

  6. 远程连接 mysql 数据库连接不上的解决方案

    今天用Navicat访问虚拟机上的mysql,无法访问报cannot connect(10038). 首先看是否可以telnet,本机cmd,telnet 10.10.10.10 3306,结果是连接 ...

  7. Android学习笔记(四) 定时器Timer

    Android考虑到线程安全问题,不允许在线程中执行UI线程. 所以在线程中不允许有UI操作 可以利用Handler机制来接收Timer每隔一秒发出的信息,也可以直接利用handler机制的 1.方法 ...

  8. MYSQL-----IFNULL()函数的用法

    Mysql查询中可以使用IFNULL()函数,IFNULL函数中有两个参数,它的作用是测试如果ifnull第一个参数不为null,就会显示出查询的结果,如果第一个参数为null,则会返回第二个参数的字 ...

  9. [你必须知道的.NET]第十九回:对象创建始末(下)

    本文将介绍以下内容: 对象的创建过程 内存分配分析 内存布局研究 接上回[第十八回:对象创建始末(上)],继续对对象创建话题的讨论>>> 2.2 托管堆的内存分配机制 引用类型的实例 ...

  10. ubuntu访问win10下的磁盘

    在ubuntu下访问win10的磁盘时,提示出错. 先用命令查看一下磁盘挂载情况. sudo fdisk -l 会看到一些信息 我要访问的是E盘,也就是 /dev/sda6 这个分区 使用命令ntfx ...