mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-06 13:14:59 -06:00
64 lines
1.5 KiB
C++
Executable File
64 lines
1.5 KiB
C++
Executable File
// Archive/CabItem.h
|
|
|
|
#ifndef __ARCHIVE_CAB_ITEM_H
|
|
#define __ARCHIVE_CAB_ITEM_H
|
|
|
|
#include "Common/Types.h"
|
|
#include "Common/MyString.h"
|
|
#include "CabHeader.h"
|
|
|
|
namespace NArchive {
|
|
namespace NCab {
|
|
|
|
struct CFolder
|
|
{
|
|
UInt32 DataStart; // offset of the first CFDATA block in this folder
|
|
UInt16 NumDataBlocks; // number of CFDATA blocks in this folder
|
|
Byte CompressionTypeMajor;
|
|
Byte CompressionTypeMinor;
|
|
Byte GetCompressionMethod() const { return (Byte)(CompressionTypeMajor & 0xF); }
|
|
};
|
|
|
|
struct CItem
|
|
{
|
|
AString Name;
|
|
UInt32 Offset;
|
|
UInt32 Size;
|
|
UInt32 Time;
|
|
UInt16 FolderIndex;
|
|
UInt16 Flags;
|
|
UInt16 Attributes;
|
|
|
|
UInt64 GetEndOffset() const { return (UInt64)Offset + Size; }
|
|
UInt32 GetWinAttributes() const { return (Attributes & ~NHeader::kFileNameIsUTFAttributeMask); }
|
|
bool IsNameUTF() const { return (Attributes & NHeader::kFileNameIsUTFAttributeMask) != 0; }
|
|
bool IsDir() const { return (Attributes & FILE_ATTRIBUTE_DIRECTORY) != 0; }
|
|
|
|
bool ContinuedFromPrev() const
|
|
{
|
|
return
|
|
(FolderIndex == NHeader::NFolderIndex::kContinuedFromPrev) ||
|
|
(FolderIndex == NHeader::NFolderIndex::kContinuedPrevAndNext);
|
|
}
|
|
|
|
bool ContinuedToNext() const
|
|
{
|
|
return
|
|
(FolderIndex == NHeader::NFolderIndex::kContinuedToNext) ||
|
|
(FolderIndex == NHeader::NFolderIndex::kContinuedPrevAndNext);
|
|
}
|
|
|
|
int GetFolderIndex(int numFolders) const
|
|
{
|
|
if (ContinuedFromPrev())
|
|
return 0;
|
|
if (ContinuedToNext())
|
|
return (numFolders - 1);
|
|
return FolderIndex;
|
|
}
|
|
};
|
|
|
|
}}
|
|
|
|
#endif
|