////////////////////////////////////////////////////////////// // Track the change for the specified object // void MgMapBase::TrackChange(CREFSTRING objectId, bool layer, MgObjectChange::ChangeType type, CREFSTRING param) { if(m_trackChangesDisabled) return; MG_TRY() //check if there is already a changelist for this object. If not, created it Ptr<MgChangeList> changeList = (MgChangeList*)m_changeLists->FindItem(objectId); if(changeList == NULL) { changeList = new MgChangeList(objectId, layer); if(changeList == NULL) throw new MgOutOfMemoryException(L"MgMapBase.TrackChange", __LINE__, __WFILE__, NULL, L"", NULL); m_changeLists->Add(changeList); } //create a change record and adds it to the change list Ptr<MgObjectChange> change = new MgObjectChange(type); if(change == NULL) throw new MgOutOfMemoryException(L"MgMapBase.TrackChange", __LINE__, __WFILE__, NULL, L"", NULL); change->SetParam(param); changeList->AddChange(change); MG_CATCH_AND_THROW(L"MgMapBase.TrackChange") }