21 #if !defined(ZIPARCHIVE_ZIPCENTRALDIR_DOT_H)
22 #define ZIPARCHIVE_ZIPCENTRALDIR_DOT_H
28 #if (_MSC_VER > 1000) && (defined ZIP_HAS_DLL)
29 #pragma warning (push)
30 #pragma warning( disable : 4251 ) // needs to have dll-interface to be used by clients of class
35 #include "ZipAutoBuffer.h"
36 #include "ZipCollections.h"
38 #include "ZipExport.h"
39 #include "ZipCallbackProvider.h"
90 #pragma warning(suppress: 26495)
134 #ifdef _ZIP_USE_LOCKING
138 m_bCaseSensitive =
false;
139 m_bFindFastEnabled =
false;
140 m_pszComment.Release();
142 m_bInArchive =
false;
146 m_uVolumeEntriesNo = 0;
147 m_uEntriesNumber = 0;
150 m_iLastIndexAdded = ZIP_FILE_INDEX_UNSPECIFIED;
154 return (m_uEndOffset >= m_uOffset + m_uSize);
156 ZIP_SIZE_TYPE CalculateBytesBeforeZip()
158 return m_uEndOffset - m_uSize - m_uOffset;
162 return (m_uSize || !m_uEntriesNumber) && (m_uEntriesNumber || !m_uSize);
174 bool NeedsZip64()
const
176 return m_uLastVolume >= USHRT_MAX || m_uVolumeWithCD >= USHRT_MAX || m_uVolumeEntriesNo >= USHRT_MAX || m_uEntriesNumber >= USHRT_MAX || m_uSize >= UINT_MAX || m_uOffset >= UINT_MAX;
179 CZipAutoBuffer m_pszComment;
184 bool m_bCaseSensitive;
189 bool m_bFindFastEnabled;
194 ZIP_INDEX_TYPE m_iLastIndexAdded;
200 ZIPSTRINGCOMPARE m_pCompare;
202 #ifdef _ZIP_USE_LOCKING
203 ZipArchiveLib::CZipMutex m_mutex;
245 void OpenFile(ZIP_INDEX_TYPE uIndex);
327 return m_pInfo ?
m_pInfo->m_iLastIndexAdded : ZIP_FILE_INDEX_UNSPECIFIED;
348 ZIP_SIZE_TYPE
GetSize(
bool bWhole =
false)
const;
357 void CloseFile(
bool skipCheckingDataDescriptor =
false);
385 ZIP_INDEX_TYPE
FindFile(LPCTSTR lpszFileName,
bool bCaseSensitive,
bool bSporadically,
bool bFileNameOnly);
397 return ZIP_FILE_INDEX_NOT_FOUND;
399 return (*
m_pFindArray)[(ZIP_ARRAY_SIZE_TYPE)uFindFastIndex]->m_uIndex;
411 return (*
m_pHeaders)[(ZIP_ARRAY_SIZE_TYPE)uIndex];
422 return (*
m_pHeaders)[(ZIP_ARRAY_SIZE_TYPE)uIndex];
443 void SetComment(LPCTSTR lpszComment, UINT codePage);
491 if (
m_pInfo->m_bFindFastEnabled)
536 #ifdef _ZIP_UNICODE_CUSTOM
600 ZIP_FILE_USIZE LocateSignature() ;
615 #pragma warning( push )
616 #pragma warning (disable : 4702) // unreachable code
633 if (pHeader1 == pHeader2)
654 #pragma warning( pop )
657 static int CompareFindFastCollate(
const void* pArg1,
const void* pArg2)
659 CZipFindFast* pHeader1 = *(CZipFindFast**)pArg1;
660 CZipFindFast* pHeader2 = *(CZipFindFast**)pArg2;
661 return pHeader1->m_pHeader->
GetFileName().Collate(pHeader2->m_pHeader->GetFileName());
664 static int CompareFindFastCollateNoCase(
const void* pArg1,
const void* pArg2)
666 CZipFindFast* pHeader1 = *(CZipFindFast**)pArg1;
667 CZipFindFast* pHeader2 = *(CZipFindFast**)pArg2;
668 return pHeader1->m_pHeader->GetFileName().CollateNoCase(pHeader2->m_pHeader->GetFileName());
685 void ClearFindFastArray()
688 for (ZIP_ARRAY_SIZE_TYPE i = 0; i < uCount; i++)
723 return ((*
m_pFindArray)[(ZIP_ARRAY_SIZE_TYPE)uIndex]->m_pHeader->GetFileName().*(
m_pInfo->m_pCompare))(lpszFileName);
818 #ifdef _ZIP_USE_LOCKING
854 #if (_MSC_VER > 1000) && (defined ZIP_HAS_DLL)
855 #pragma warning (pop)
859 #endif // !defined(ZIPARCHIVE_ZIPCENTRALDIR_DOT_H)