⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zipitem.cpp

📁 由7-zip提供的压缩、解压缩程序
💻 CPP
字号:
// Archive/ZipItem.cpp#include "StdAfx.h"#include "ZipHeader.h"#include "ZipItem.h"#include "../Common/ItemNameUtils.h"namespace NArchive {namespace NZip {bool operator==(const CVersion &v1, const CVersion &v2){  return (v1.Version == v2.Version) && (v1.HostOS == v2.HostOS);}bool operator!=(const CVersion &v1, const CVersion &v2){  return !(v1 == v2);} bool CItem::IsEncrypted() const{ return (Flags & NFileHeader::NFlags::kEncryptedMask) != 0; }bool CItem::HasDescriptor() const  { return (Flags & NFileHeader::NFlags::kDescriptorUsedMask) != 0; }bool CItem::IsImplodeBigDictionary() const{ if (CompressionMethod != NFileHeader::NCompressionMethod::kImploded)    throw 12312212;  return (Flags & NFileHeader::NFlags::kImplodeDictionarySizeMask) != 0; }bool CItem::IsImplodeLiteralsOn() const{if (CompressionMethod != NFileHeader::NCompressionMethod::kImploded)    throw 12312213;  return (Flags & NFileHeader::NFlags::kImplodeLiteralsOnMask) != 0; }static const char *kUnknownAttributes = "Unknown file attributes";bool CItem::IsDirectory() const{   if (NItemName::HasTailSlash(Name, GetCodePage()))    return true;  WORD highAttributes = WORD((ExternalAttributes >> 16 ) & 0xFFFF);  switch(MadeByVersion.HostOS)  {    case NFileHeader::NHostOS::kAMIGA:      switch (highAttributes & NFileHeader::NAmigaAttribute::kIFMT)       {        case NFileHeader::NAmigaAttribute::kIFDIR:          return true;        case NFileHeader::NAmigaAttribute::kIFREG:            return false;        default:          return false; // change it throw kUnknownAttributes;      }    case NFileHeader::NHostOS::kFAT:    case NFileHeader::NHostOS::kNTFS:    case NFileHeader::NHostOS::kHPFS:    case NFileHeader::NHostOS::kVFAT:      return ((ExternalAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0);    case NFileHeader::NHostOS::kAtari:    case NFileHeader::NHostOS::kMac:    case NFileHeader::NHostOS::kVMS:    case NFileHeader::NHostOS::kVM_CMS:    case NFileHeader::NHostOS::kAcorn:    case NFileHeader::NHostOS::kMVS:      return false; // change it throw kUnknownAttributes;    default:      /*      switch (highAttributes & NFileHeader::NUnixAttribute::kIFMT)       {        case NFileHeader::NUnixAttribute::kIFDIR:          return true;        default:          return false;      }      */      return false;  }}UInt32 CItem::GetWinAttributes() const{  DWORD winAttributes;  switch(MadeByVersion.HostOS)  {    case NFileHeader::NHostOS::kFAT:    case NFileHeader::NHostOS::kNTFS:      winAttributes = ExternalAttributes;       break;    default:      winAttributes = 0; // must be converted from unix value;;   }  if (IsDirectory())       // test it;    winAttributes |= FILE_ATTRIBUTE_DIRECTORY;  return winAttributes;}void CItem::ClearFlags()  { Flags = 0; }void CItem::SetFlagBits(int startBitNumber, int numBits, int value){    WORD mask = ((1 << numBits) - 1) << startBitNumber;  Flags &= ~mask;  Flags |= value << startBitNumber;}void CItem::SetBitMask(int bitMask, bool enable){    if(enable)     Flags |= bitMask;  else    Flags &= ~bitMask;}void CItem::SetEncrypted(bool encrypted)  { SetBitMask(NFileHeader::NFlags::kEncryptedMask, encrypted); }}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -