- /********************************************************************
- IRWEngineInfoList.cpp - ISee图像读写引擎插件信息列表类实现文件
- 版权所有(C) VCHelp-coPathway-ISee workgroup 2000 all member's
- 这一程序是自由软件,你可以遵照自由软件基金会出版的GNU 通用许可证
- 条款来修改和重新发布这一程序。或者用许可证的第二版,或者(根据你
- 的选择)用任何更新的版本。
- 发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定
- 目地的隐含的担保。更详细的情况请参阅GNU通用许可证。
- 你应该已经和程序一起收到一份GNU通用许可证(GPL)的副本。如果还没有,
- 写信给:
- The Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
- MA02139, USA
- 如果你在使用本软件时有什么问题或建议,用以下地址可以与我们取得联
- 系:
- http://isee.126.com
- http://www.vchelp.net
- 或:
- iseesoft@china.com
- 作 者:YZ
- e-mail:yzfree@sina.com
- 功能实现:图像读写插件的信息类实现代码,简化了对插件信息的管理。
- 文件版本:
- Build 00007
- Date 2000-12-4
- ********************************************************************/
- #include "stdafx.h"
- #include "IRWEngineInfoList.h"
- _IRWEC_InfoList::_IRWEC_InfoList()
- {
- ZeroAllElement();
- }
- _IRWEC_InfoList::~_IRWEC_InfoList()
- {
- ;
- }
- int _IRWEC_InfoList::GetMaxElemSize(void)
- {
- return _IRWEINFOLIST_SIZE;
- }
- int _IRWEC_InfoList::GetUsedElemSize(void)
- {
- return m_Count;
- }
- int _IRWEC_InfoList::GetActiveElemSize(void)
- {
- return m_Active;
- }
- void _IRWEC_InfoList::ZeroAllElement()
- {
- ::ZeroMemory((PVOID)m_info, sizeof(IRWMODULEINFO)*_IRWEINFOLIST_SIZE);
- for (int i=0;i<_IRWEINFOLIST_SIZE;i++)
- m_info[i].m_SN = i;
- m_Count = 0;
- m_Active = 0;
- }
- int _IRWEC_InfoList::AddElement(int num)
- {
- if ((m_Count + num) > _IRWEINFOLIST_SIZE)
- return -1; // 超出队列的容量
- m_Count += num;
- return m_Count;
- }
- // 销毁信息数组中的各种资源(该函数必须人工调用!)
- int _IRWEC_InfoList::Destroy()
- {
- int i = GetUsedElemSize();
- for (i=0;i<m_Count;i++)
- {
- if (m_info[i].m_ModuleState >= IRWEMS_CA)
- {
- VERIFY(m_info[i].m_ModuleState == IRWEMS_CR);
- ASSERT((m_info[i].m_hDll)&&(m_info[i].m_IRWPInterFace));
- ::FreeLibrary(m_info[i].m_hDll);
- }
- }
- ZeroAllElement();
- return i; // 销毁了多少个插件
- }
- LPIRWMODULEINFO _IRWEC_InfoList::GetAt(int index)
- {
- ASSERT(index < m_Count); // 不能访问未分配的单元
- return (LPIRWMODULEINFO)&(m_info[index]);
- }