1. #ifndef __E3GLOGOBJECTDB_H__
  2. #define __E3GLOGOBJECTDB_H__
  3.  
  4. #include "PubCommon\Singleton.h"
  5. #include "PubCommon\MemoryManager.h"
  6. #include "PubCommon.h"
  7.  
  8. class CMoLineMgr
  9. {
  10. public:
  11. CMoLineMgr(Win32Tools::CMemoryManager* pMemMgr);
  12. virtual ~CMoLineMgr();
  13. public:
  14. void AddMemLine(CMemLine*& pMoLine);
  15. void MoveFirst(); // 移动到第一个
  16. bool GetMoLine(CMoLine*& pMoLine); // 循环获取 MO
  17. size_t GetSize();
  18. private:
  19. Win32Tools::CMemoryManager* m_pMemMgr;
  20. CMoLine m_BeginMoLine; // 自下一个开始有效
  21. CMoLine* m_pAddMoLine; // 添加 MO 的专用游标
  22. CMoLine* m_pReadMoLine; // 读取 MO 的专用游标
  23. size_t m_iTableCnt;
  24. };
  25.  
  26. #endif
  1. #include "stdafx.h"
  2. #include "MoLineMgr.h"
  3.  
  4. CMoLineMgr::CMoLineMgr(Win32Tools::CMemoryManager* pMemMgr)
  5. : m_pMemMgr(pMemMgr)
  6. , m_pAddMoLine(NULL)
  7. , m_pReadMoLine(NULL)
  8. , m_iTableCnt()
  9. {
  10. m_pAddMoLine = &m_BeginMoLine;
  11. }
  12.  
  13. CMoLineMgr::~CMoLineMgr()
  14. {
  15. }
  16.  
  17. void CMoLineMgr::AddMemLine(CMemLine*& pMemLine)
  18. {
  19. if(pMemLine == NULL)
  20. return;
  21. CMoLine* pNew = (CMoLine*)m_pMemMgr->GetMemory(sizeof(CMoLine));
  22. pNew = new (pNew) CMoLine;
  23. pNew->m_pMemLine = pMemLine;
  24. m_pAddMoLine->m_pNextMoLine = pNew;
  25. m_pAddMoLine = pNew;
  26. ++m_iTableCnt;
  27. }
  28.  
  29. size_t CMoLineMgr::GetSize(void)
  30. {
  31. return m_iTableCnt;
  32. }
  33.  
  34. void CMoLineMgr::MoveFirst()
  35. {
  36. // 移动到第一个
  37.  
  38. m_pReadMoLine = &m_BeginMoLine;
  39. }
  40.  
  41. bool CMoLineMgr::GetMoLine( CMoLine*& pMoLine )
  42. {
  43. // 循环获取 MO
  44.  
  45. if(m_pReadMoLine->m_pNextMoLine == NULL)
  46. {
  47. pMoLine = NULL;
  48. return false;
  49. }
  50. else
  51. {
  52. pMoLine = m_pReadMoLine->m_pNextMoLine;
  53. m_pReadMoLine = m_pReadMoLine->m_pNextMoLine;
  54. return true;
  55. }
  56. }

CMoLineMgr的更多相关文章

随机推荐

  1. Java的BIO,NIO,AIO

    Java中的IO操作可谓常见.在Java的IO体系中,常有些名词容易让人困惑不解.为此,先通俗地介绍下这些名词. 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同 ...

  2. C#+TaskScheduler(定时任务)实现定时自动下载

    C# /TaskScheduler /定时任务 /定时自动下载 3410 实现原理,客户是广电,在广电服务器创建一个FTP目录,然后每天自动从卫星上自动更新节目列表, 然后功能就是要每天定点一个时间自 ...

  3. IDEA配置toString方法

    1.toString JSON带父类toString public java.lang.String toString() { final java.lang.StringBuilder sb = n ...

  4. 两周撸一个掘金微信小程序

    利益相关 无 声明 这并不是掘金官方小程序(貌似没有搜到掘金 APP 对应的官方小程序),完全为第三者开发者开发,仅用于学习交流,禁止用于其他用途.若要使用官方正版,可访问掘金 官方网站,或下载掘金官 ...

  5. [BZOJ4942][Noi2017]整数 线段树+压位

    用线段树来模拟加减法过程,维护连续一段中是否全为0/1. 因为数字很大,我们60位压一位来处理. #include<iostream> #include<cstring> #i ...

  6. 抽象工厂模式(Abstract Factory)C#实例

    抽象工厂模式(Abstract Factory)C#实例 本文出处http://www.dofactory.com/net/abstract-factory-design-pattern 一.场景描述 ...

  7. NBUT 1221 Intermediary

    最短路,三进制状态压缩. $dis[i][j]$表示到$i$节点,每个中介用了几次的情况下的最小花费,跑最短路即可. #include<cstdio> #include<cstrin ...

  8. 洛谷P3435 [POI2006]OKR-Period of Words [KMP]

    洛谷传送门,BZOJ传送门 OKR-Period of Words Description 一个串是有限个小写字符的序列,特别的,一个空序列也可以是一个串. 一个串P是串A的前缀, 当且仅当存在串B, ...

  9. canconfig 移植记录

    can 在Linux 里面是作为一个网络设备存在的,记录一下 canconfig 移植过程. 一. 下载 canutils 和 libsocketcan libsocketcan 地址: http:/ ...

  10. redis_NoSql入门概述

    一.为什么要使用Nosql 今天我们可以通过第三方平台(如:google,facebook)可以很容易的访问和抓取数据.用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加. ...