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"
130 #ifdef _ZIP_USE_LOCKING
134 m_bCaseSensitive =
false;
135 m_bFindFastEnabled =
false;
136 m_pszComment.Release();
138 m_bInArchive =
false;
142 m_uVolumeEntriesNo = 0;
143 m_uEntriesNumber = 0;
146 m_iLastIndexAdded = ZIP_FILE_INDEX_UNSPECIFIED;
150 return (m_uEndOffset >= m_uOffset + m_uSize);
152 ZIP_SIZE_TYPE CalculateBytesBeforeZip()
154 return m_uEndOffset - m_uSize - m_uOffset;
158 return (m_uSize || !m_uEntriesNumber) && (m_uEntriesNumber || !m_uSize);
170 bool NeedsZip64()
const
172 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;
175 CZipAutoBuffer m_pszComment;
180 bool m_bCaseSensitive;
185 bool m_bFindFastEnabled;
190 ZIP_INDEX_TYPE m_iLastIndexAdded;
196 ZIPSTRINGCOMPARE m_pCompare;
198 #ifdef _ZIP_USE_LOCKING
199 ZipArchiveLib::CZipMutex m_mutex;
241 void OpenFile(ZIP_INDEX_TYPE uIndex);
323 return m_pInfo ?
m_pInfo->m_iLastIndexAdded : ZIP_FILE_INDEX_UNSPECIFIED;
344 ZIP_SIZE_TYPE
GetSize(
bool bWhole =
false)
const;
353 void CloseFile(
bool skipCheckingDataDescriptor =
false);
381 ZIP_INDEX_TYPE
FindFile(LPCTSTR lpszFileName,
bool bCaseSensitive,
bool bSporadically,
bool bFileNameOnly);
393 return ZIP_FILE_INDEX_NOT_FOUND;
395 return (*
m_pFindArray)[(ZIP_ARRAY_SIZE_TYPE)uFindFastIndex]->m_uIndex;
407 return (*
m_pHeaders)[(ZIP_ARRAY_SIZE_TYPE)uIndex];
418 return (*
m_pHeaders)[(ZIP_ARRAY_SIZE_TYPE)uIndex];
439 void SetComment(LPCTSTR lpszComment, UINT codePage);
487 if (
m_pInfo->m_bFindFastEnabled)
532 #ifdef _ZIP_UNICODE_CUSTOM
596 ZIP_FILE_USIZE LocateSignature() ;
611 #pragma warning( push )
612 #pragma warning (disable : 4702) // unreachable code
651 #pragma warning( pop )
654 static int CompareFindFastCollate(
const void* pArg1,
const void* pArg2)
656 CZipFindFast* pHeader1 = *(CZipFindFast**)pArg1;
657 CZipFindFast* pHeader2 = *(CZipFindFast**)pArg2;
658 return pHeader1->m_pHeader->GetFileName().Collate(pHeader2->m_pHeader->GetFileName());
661 static int CompareFindFastCollateNoCase(
const void* pArg1,
const void* pArg2)
663 CZipFindFast* pHeader1 = *(CZipFindFast**)pArg1;
664 CZipFindFast* pHeader2 = *(CZipFindFast**)pArg2;
665 return pHeader1->m_pHeader->GetFileName().CollateNoCase(pHeader2->m_pHeader->GetFileName());
682 void ClearFindFastArray()
685 for (ZIP_ARRAY_SIZE_TYPE i = 0; i < uCount; i++)
720 return ((*
m_pFindArray)[(ZIP_ARRAY_SIZE_TYPE)uIndex]->m_pHeader->GetFileName().*(
m_pInfo->m_pCompare))(lpszFileName);
815 #ifdef _ZIP_USE_LOCKING
851 #if (_MSC_VER > 1000) && (defined ZIP_HAS_DLL)
852 #pragma warning (pop)
856 #endif // !defined(ZIPARCHIVE_ZIPCENTRALDIR_DOT_H)