Index: src/libchcore/TFileInfo.cpp =================================================================== diff -u -N -r2efd22688b8d12be34c87bf2b024d8db6e317d60 -ra7834ba278464cb62739f22d35f9bc16269706a1 --- src/libchcore/TFileInfo.cpp (.../TFileInfo.cpp) (revision 2efd22688b8d12be34c87bf2b024d8db6e317d60) +++ src/libchcore/TFileInfo.cpp (.../TFileInfo.cpp) (revision a7834ba278464cb62739f22d35f9bc16269706a1) @@ -33,9 +33,7 @@ ////////////////////////////////////////////////////////////////////// TFileInfo::TFileInfo() : - m_pBasePaths(NULL), m_pathFile(), - m_stSrcIndex(std::numeric_limits::max()), m_dwAttributes(0), m_uhFileSize(0), m_uiFlags(0) @@ -45,47 +43,44 @@ m_ftLastWrite.dwHighDateTime = m_ftLastWrite.dwLowDateTime = 0; } -TFileInfo::TFileInfo(const TFileInfo& finf) : - m_pathFile(finf.m_pathFile), - m_stSrcIndex(finf.m_stSrcIndex), - m_dwAttributes(finf.m_dwAttributes), - m_uhFileSize(finf.m_uhFileSize), - m_ftCreation(finf.m_ftCreation), - m_ftLastAccess(finf.m_ftLastAccess), - m_ftLastWrite(finf.m_ftLastWrite), - m_uiFlags(finf.m_uiFlags), - m_pBasePaths(finf.m_pBasePaths) +TFileInfo::TFileInfo(const TFileInfo& rSrc) : + m_pathFile(rSrc.m_pathFile), + m_spBasePathData(rSrc.m_spBasePathData), + m_dwAttributes(rSrc.m_dwAttributes), + m_uhFileSize(rSrc.m_uhFileSize), + m_ftCreation(rSrc.m_ftCreation), + m_ftLastAccess(rSrc.m_ftLastAccess), + m_ftLastWrite(rSrc.m_ftLastWrite), + m_uiFlags(rSrc.m_uiFlags) { } TFileInfo::~TFileInfo() { } -void TFileInfo::Init(const TSmartPath& rpathFile, size_t stSrcIndex, const TModPathContainer* pBasePaths, - DWORD dwAttributes, ULONGLONG uhFileSize, FILETIME ftCreation, FILETIME ftLastAccess, FILETIME ftLastWrite, - uint_t uiFlags) +void TFileInfo::Init(const TBasePathDataPtr& spBasePathData, const TSmartPath& rpathFile, + DWORD dwAttributes, ULONGLONG uhFileSize, FILETIME ftCreation, FILETIME ftLastAccess, FILETIME ftLastWrite, + uint_t uiFlags) { m_pathFile = rpathFile; - m_stSrcIndex = stSrcIndex; - m_pBasePaths = pBasePaths; + m_spBasePathData = spBasePathData; m_dwAttributes = dwAttributes; m_uhFileSize = uhFileSize; m_ftCreation = ftCreation; m_ftLastAccess = ftLastAccess; m_ftLastWrite = ftLastWrite; m_uiFlags = uiFlags; - if(m_pBasePaths && m_stSrcIndex != std::numeric_limits::max()) - m_pathFile.MakeRelativePath(m_pBasePaths->GetAt(m_stSrcIndex)); // cut path from clipboard + if(m_spBasePathData) + m_pathFile.MakeRelativePath(m_spBasePathData->GetSrcPath()); } void TFileInfo::Init(const TSmartPath& rpathFile, DWORD dwAttributes, ULONGLONG uhFileSize, FILETIME ftCreation, FILETIME ftLastAccess, FILETIME ftLastWrite, uint_t uiFlags) { m_pathFile = rpathFile; - m_stSrcIndex = std::numeric_limits::max(); - m_pBasePaths = NULL; + m_spBasePathData.reset(); m_dwAttributes = dwAttributes; m_uhFileSize = uhFileSize; m_ftCreation = ftCreation; @@ -94,17 +89,15 @@ m_uiFlags = uiFlags; } -void TFileInfo::SetParentObject(size_t stIndex, const TModPathContainer* pBasePaths) +void TFileInfo::SetParentObject(const TBasePathDataPtr& spBasePathData) { // cannot set parent object if there is already one specified - if(m_pBasePaths && m_stSrcIndex != std::numeric_limits::max()) + if(m_spBasePathData) THROW_CORE_EXCEPTION(eErr_InvalidArgument); - m_stSrcIndex = stIndex; - m_pBasePaths = pBasePaths; - - if(m_pBasePaths && m_stSrcIndex != std::numeric_limits::max()) - m_pathFile.MakeRelativePath(m_pBasePaths->GetAt(m_stSrcIndex)); + m_spBasePathData = spBasePathData; + if(m_spBasePathData) + m_pathFile.MakeRelativePath(m_spBasePathData->GetSrcPath()); } bool TFileInfo::operator==(const TFileInfo& rInfo) @@ -115,59 +108,26 @@ TSmartPath TFileInfo::GetFullFilePath() const { - if(m_stSrcIndex != std::numeric_limits::max()) + if(m_spBasePathData) { - BOOST_ASSERT(m_pBasePaths); - if(!m_pBasePaths) - THROW_CORE_EXCEPTION(eErr_InvalidPointer); - - TSmartPath pathCombined = m_pBasePaths->GetAt(m_stSrcIndex); + TSmartPath pathCombined = m_spBasePathData->GetSrcPath(); pathCombined += m_pathFile; return pathCombined; } else return m_pathFile; } -void TFileInfo::Serialize(TReadBinarySerializer& rSerializer) +size_t TFileInfo::GetSrcObjectID() const { - using Serializers::Serialize; - - Serialize(rSerializer, m_pathFile); - Serialize(rSerializer, m_stSrcIndex); - Serialize(rSerializer, m_dwAttributes); - Serialize(rSerializer, m_uhFileSize); - Serialize(rSerializer, m_ftCreation.dwHighDateTime); - Serialize(rSerializer, m_ftCreation.dwLowDateTime); - Serialize(rSerializer, m_ftLastAccess.dwHighDateTime); - Serialize(rSerializer, m_ftLastAccess.dwLowDateTime); - Serialize(rSerializer, m_ftLastWrite.dwHighDateTime); - Serialize(rSerializer, m_ftLastWrite.dwLowDateTime); - Serialize(rSerializer, m_uiFlags); + if(m_spBasePathData) + return m_spBasePathData->GetObjectID(); + return std::numeric_limits::max(); } -void TFileInfo::Serialize(TWriteBinarySerializer& rSerializer) const +TBasePathDataPtr TFileInfo::GetBasePathData() const { - using Serializers::Serialize; - - Serialize(rSerializer, m_pathFile); - Serialize(rSerializer, m_stSrcIndex); - Serialize(rSerializer, m_dwAttributes); - Serialize(rSerializer, m_uhFileSize); - Serialize(rSerializer, m_ftCreation.dwHighDateTime); - Serialize(rSerializer, m_ftCreation.dwLowDateTime); - Serialize(rSerializer, m_ftLastAccess.dwHighDateTime); - Serialize(rSerializer, m_ftLastAccess.dwLowDateTime); - Serialize(rSerializer, m_ftLastWrite.dwHighDateTime); - Serialize(rSerializer, m_ftLastWrite.dwLowDateTime); - Serialize(rSerializer, m_uiFlags); + return m_spBasePathData; } -size_t TFileInfo::GetSrcObjectID() const -{ - if(m_pBasePaths) - return m_pBasePaths->GetOidAt(m_stSrcIndex); - return std::numeric_limits::max(); -} - END_CHCORE_NAMESPACE