Index: src/ch/FileInfo.cpp =================================================================== diff -u -N -r4ec3aef62d14193e3021e6bc3f8bcdf11770c7d5 -r860b25a7b72cd40f83d810f7c72a5e2a76f88987 --- src/ch/FileInfo.cpp (.../FileInfo.cpp) (revision 4ec3aef62d14193e3021e6bc3f8bcdf11770c7d5) +++ src/ch/FileInfo.cpp (.../FileInfo.cpp) (revision 860b25a7b72cd40f83d810f7c72a5e2a76f88987) @@ -514,6 +514,15 @@ /////////////////////////////////////////////////////////////////////// // Array +CFileInfoArray::CFileInfoArray(CClipboardArray& rClipboardArray) : + m_rClipboard(rClipboardArray) +{ +} + +CFileInfoArray::~CFileInfoArray() +{ +} + void CFileInfoArray::AddFileInfo(const CFileInfoPtr& spFileInfo) { boost::unique_lock lock(m_lock); @@ -554,3 +563,32 @@ boost::unique_lock lock(m_lock); m_vFiles.clear(); } + +unsigned long long CFileInfoArray::CalculateTotalSize() +{ + unsigned long long ullSize = 0; + + boost::shared_lock lock(m_lock); + BOOST_FOREACH(CFileInfoPtr& spFileInfo, m_vFiles) + { + ullSize += spFileInfo->GetLength64(); + } + + return ullSize; +} + +unsigned long long CFileInfoArray::CalculatePartialSize(size_t stCount) +{ + unsigned long long ullSize = 0; + + boost::shared_lock lock(m_lock); + if(stCount > m_vFiles.size()) + THROW(_T("Invalid argument"), 0, 0, 0); + + for(std::vector::iterator iter = m_vFiles.begin(); iter != m_vFiles.begin() + stCount; ++iter) + { + ullSize += (*iter)->GetLength64(); + } + + return ullSize; +}