CTag::CTag(const CTag& rTag) { m_uType = rTag.m_uType; m_uName = rTag.m_uName; m_pszName = rTag.m_pszName!=NULL ? nstrdup(rTag.m_pszName) : NULL; m_nBlobSize = 0; if (rTag.IsStr()) m_pstrVal = new CString(rTag.GetStr()); else if (rTag.IsInt()) m_uVal = rTag.GetInt(); else if (rTag.IsInt64(false)) m_uVal = rTag.GetInt64(); else if (rTag.IsFloat()) m_fVal = rTag.GetFloat(); else if (rTag.IsHash()){ m_pData = new BYTE[16]; md4cpy(m_pData, rTag.GetHash()); } else if (rTag.IsBlob()){ m_nBlobSize = rTag.GetBlobSize(); m_pData = new BYTE[rTag.GetBlobSize()]; memcpy(m_pData, rTag.GetBlob(), rTag.GetBlobSize()); } else{ ASSERT(0); m_uVal = 0; } ASSERT_VALID(this); }
void CAbstractFile::SetInt64TagValue(uint8 tagname, uint64 uValue) { for (int i = 0; i < taglist.GetSize(); i++){ CTag* pTag = taglist[i]; if (pTag->GetNameID()==tagname && pTag->IsInt64(true)){ pTag->SetInt64(uValue); return; } } CTag* pTag = new CTag(tagname, uValue); taglist.Add(pTag); }