#include "StdAfx.h" #include "MBBaseLinkDocMgr.h" IMPLEMENT_DYNAMIC(CMBBaseLinkDocMgr, CMBAbstBaseObj) CMBBaseLinkDocMgr::CMBBaseLinkDocMgr(void) { RemoveAllLinkDocObj(); } CMBBaseLinkDocMgr::~CMBBaseLinkDocMgr(void) { RemoveAllLinkDocObj(); } bool CMBBaseLinkDocMgr::AddLinkDocObj(CMBBaseLinkDocObj *pLinkDocObj) { if( NULL == pLinkDocObj || pLinkDocObj->m_strID.IsEmpty() ) return false; CMBBaseLinkDocObjMap::iterator it; CString strID; strID = pLinkDocObj->m_strID; it = m_mapLinkDocObj.find(strID); // Èç¹ûÕҵõ½ ·µ»Ø if( it != m_mapLinkDocObj.end() ) return false; m_mapLinkDocObj[strID] = pLinkDocObj; m_vecotrLinkDocObj.push_back(pLinkDocObj); return true; } CMBBaseLinkDocObj* CMBBaseLinkDocMgr::GetLinkDocObj( CString strID ) { if( strID.IsEmpty() ) { return NULL; } CMBBaseLinkDocObjMap::iterator it; CMBBaseLinkDocObj *pLinkDocObj = NULL; it = m_mapLinkDocObj.find(strID); if( it!= m_mapLinkDocObj.end() ) pLinkDocObj = it->second; return pLinkDocObj; } bool CMBBaseLinkDocMgr::RemoveAllLinkDocObj() { CMBBaseLinkDocObjMap::iterator it; CMBBaseLinkDocObj *pLinkDocObj = NULL; for( it = m_mapLinkDocObj.begin();it != m_mapLinkDocObj.end();it++ ) { pLinkDocObj = it->second; delete pLinkDocObj; pLinkDocObj = NULL; } m_mapLinkDocObj.clear(); m_vecotrLinkDocObj.clear(); return true; } bool CMBBaseLinkDocMgr::GetBaseObjVector( CMBBaseObjVector &vectorObj ) { CMBBaseLinkDocObjVector::iterator it; CMBBaseLinkDocObj *pLinkDocObj = NULL; for( it = m_vecotrLinkDocObj.begin();it != m_vecotrLinkDocObj.end();it++ ) { pLinkDocObj = *it; vectorObj.push_back(pLinkDocObj); } return true; } bool CMBBaseLinkDocMgr::RemoveLinkDocObj( CMBBaseLinkDocObj *pLinkDocObj ) { bool bDelte = false; if( NULL == pLinkDocObj ) return false; CMBBaseLinkDocObjMap::iterator it = m_mapLinkDocObj.find(pLinkDocObj->m_strID); if( it!= m_mapLinkDocObj.end() ) { bDelte = true; m_mapLinkDocObj.erase(it); } CMBBaseLinkDocObjVector::iterator it1 = std::find(m_vecotrLinkDocObj.begin( ), m_vecotrLinkDocObj.end( ), pLinkDocObj); //²éÕÒ3 if( it1 != m_vecotrLinkDocObj.end( ) ){ bDelte = true; m_vecotrLinkDocObj.erase(it1); } if( bDelte ){ delete pLinkDocObj; pLinkDocObj = NULL; } return true; } // ÒÆ³ýÎļþÐÅÏ¢ bool CMBBaseLinkDocMgr::RemoveLinkDocObj( CString strID ) { CMBBaseLinkDocObj *pBase= GetLinkDocObj( strID ); return RemoveLinkDocObj( pBase ); } void CMBBaseLinkDocMgr::GetLinkDocObjMap( CMBBaseLinkDocObjMap &mapLinkDocObj) { mapLinkDocObj.clear(); mapLinkDocObj = m_mapLinkDocObj; } void CMBBaseLinkDocMgr:: GetLinkDocObjVector( CMBBaseLinkDocObjVector &vecotrLinkDocObj) { vecotrLinkDocObj.clear(); vecotrLinkDocObj = m_vecotrLinkDocObj; } int CMBBaseLinkDocMgr::GetCount() { return m_mapLinkDocObj.size(); }