void CFriend::LoadFromFile(CFileDataIO* file) { file->ReadHash16(m_abyUserhash); m_dwLastUsedIP = file->ReadUInt32(); m_nLastUsedPort = file->ReadUInt16(); m_dwLastSeen = ConvertFromTime32(file->ReadUInt32()); m_dwLastChatted = file->ReadUInt32(); UINT tagcount = file->ReadUInt32(); for (UINT j = 0; j < tagcount; j++){ CTag* newtag = new CTag(file, false); switch (newtag->GetNameID()){ case FF_NAME:{ ASSERT( newtag->IsStr() ); if (newtag->IsStr()){ if (m_strName.IsEmpty()) m_strName = newtag->GetStr(); } break; } case FF_KADID:{ ASSERT( newtag->IsHash() ); if (newtag->IsHash()) md4cpy(m_abyKadID, newtag->GetHash()); break; } } delete newtag; } }
void CFriend::LoadFromFile(CFileDataIO* file) { file->ReadHash16(m_abyUserhash); m_dwHasHash = md4cmp(m_abyUserhash, sm_abyNullHash) ? 1 : 0; m_dwLastUsedIP = file->ReadUInt32(); m_nLastUsedPort = file->ReadUInt16(); m_dwLastSeen = file->ReadUInt32(); m_dwLastChatted = file->ReadUInt32(); UINT tagcount = file->ReadUInt32(); for (UINT j = 0; j < tagcount; j++){ CTag* newtag = new CTag(file, false); switch (newtag->GetNameID()){ case FF_NAME:{ ASSERT( newtag->IsStr() ); if (newtag->IsStr()){ if (m_strName.IsEmpty()) m_strName = newtag->GetStr(); } break; } } delete newtag; } }
CTag::CTag(const CTag& rTag) { m_uType = rTag.m_uType; m_uName = rTag.m_uName; m_Name = rTag.m_Name; m_nSize = 0; if (rTag.IsStr()) { m_pstrVal = new wxString(rTag.GetStr()); } else if (rTag.IsInt()) { m_uVal = rTag.GetInt(); } else if (rTag.IsFloat()) { m_fVal = rTag.GetFloat(); } else if (rTag.IsHash()) { m_hashVal = new CMD4Hash(rTag.GetHash()); } else if (rTag.IsBlob()) { m_nSize = rTag.GetBlobSize(); m_pData = new unsigned char[rTag.GetBlobSize()]; memcpy(m_pData, rTag.GetBlob(), rTag.GetBlobSize()); } else if (rTag.IsBsob()) { m_nSize = rTag.GetBsobSize(); m_pData = new unsigned char[rTag.GetBsobSize()]; memcpy(m_pData, rTag.GetBsob(), rTag.GetBsobSize()); } else { wxFAIL; m_uVal = 0; } }
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.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::SetStrTagValue(uint8 tagname, LPCTSTR pszValue) { for (int i = 0; i < taglist.GetSize(); i++){ CTag* pTag = taglist[i]; if (pTag->GetNameID()==tagname && pTag->IsStr()){ pTag->SetStr(pszValue); return; } } CTag* pTag = new CTag(tagname, pszValue); taglist.Add(pTag); }