#include "StdAfx.h" #include "MBBaseTagDocMgr.h" IMPLEMENT_DYNAMIC(CMBBaseTagDocMgr, CMBAbstBaseObj) CMBBaseTagDocMgr::CMBBaseTagDocMgr(void) { RemoveAllTagDocObj(); m_bGetTagList = false; } CMBBaseTagDocMgr::~CMBBaseTagDocMgr(void) { RemoveAllTagDocObj(); } bool CMBBaseTagDocMgr::AddTagDocObj(CMBBaseTagDocObj *pTagDocObj) { if( NULL == pTagDocObj || pTagDocObj->m_strName.IsEmpty() ) return false; CMBBaseTagDocObjMap::iterator it; CString strName; strName = pTagDocObj->m_strName; it = m_mapTagDocObj.find(strName); // Èç¹ûÕҵõ½ ·µ»Ø if( it != m_mapTagDocObj.end() ) return false; m_mapTagDocObj[strName] = pTagDocObj; m_vecotrTagDocObj.push_back(pTagDocObj); return true; } CMBBaseTagDocObj* CMBBaseTagDocMgr::GetTagDocObj( CString strName ) { if( strName.IsEmpty() ) { return NULL; } CMBBaseTagDocObjMap::iterator it; CMBBaseTagDocObj *pTagDocObj = NULL; it = m_mapTagDocObj.find(strName); if( it!= m_mapTagDocObj.end() ) pTagDocObj = it->second; return pTagDocObj; } bool CMBBaseTagDocMgr::RemoveAllTagDocObj() { CMBBaseTagDocObjMap::iterator it; CMBBaseTagDocObj *pTagDocObj = NULL; for( it = m_mapTagDocObj.begin();it != m_mapTagDocObj.end();it++ ) { pTagDocObj = it->second; delete pTagDocObj; pTagDocObj = NULL; } m_mapTagDocObj.clear(); m_vecotrTagDocObj.clear(); return true; } bool CMBBaseTagDocMgr::GetBaseObjVector( CMBBaseObjVector &vectorObj ) { CMBBaseTagDocObjVector::iterator it; CMBBaseTagDocObj *pTagDocObj = NULL; for( it = m_vecotrTagDocObj.begin();it != m_vecotrTagDocObj.end();it++ ) { pTagDocObj = *it; vectorObj.push_back(pTagDocObj); } return true; } bool CMBBaseTagDocMgr::RemoveTagDocObj( CMBBaseTagDocObj *pTagDocObj ) { bool bDelte = false; if( NULL == pTagDocObj ) return false; CMBBaseTagDocObjMap::iterator it = m_mapTagDocObj.find(pTagDocObj->m_strName); if( it!= m_mapTagDocObj.end() ) { bDelte = true; m_mapTagDocObj.erase(it); } CMBBaseTagDocObjVector::iterator it1 = std::find(m_vecotrTagDocObj.begin( ), m_vecotrTagDocObj.end( ), pTagDocObj); //²éÕÒ3 if( it1 != m_vecotrTagDocObj.end( ) ){ bDelte = true; m_vecotrTagDocObj.erase(it1); } if( bDelte ){ delete pTagDocObj; pTagDocObj = NULL; } return true; } // ÒÆ³ýÎļþÐÅÏ¢ bool CMBBaseTagDocMgr::RemoveTagDocObj( CString strID ) { CMBBaseTagDocObj *pBase= GetTagDocObj( strID ); return RemoveTagDocObj( pBase ); } void CMBBaseTagDocMgr::GetTagDocObjMap( CMBBaseTagDocObjMap &mapTagDocObj) { mapTagDocObj.clear(); mapTagDocObj = m_mapTagDocObj; } void CMBBaseTagDocMgr:: GetTagDocObjVector( CMBBaseTagDocObjVector &vecotrTagDocObj) { vecotrTagDocObj.clear(); vecotrTagDocObj = m_vecotrTagDocObj; } int CMBBaseTagDocMgr::GetCount() { return m_mapTagDocObj.size(); }