zipin.h
来自「由7-zip提供的压缩、解压缩程序」· C头文件 代码 · 共 88 行
H
88 行
// Archive/ZipIn.h#ifndef __ZIP_IN_H#define __ZIP_IN_H#include "Common/MyCom.h"#include "../../IStream.h"#include "ZipHeader.h"#include "ZipItemEx.h"namespace NArchive {namespace NZip { class CInArchiveException{public: enum ECauseType { kUnexpectedEndOfArchive = 0, kArchiceHeaderCRCError, kFileHeaderCRCError, kIncorrectArchive, kDataDescroptorsAreNotSupported, kMultiVolumeArchiveAreNotSupported, kReadStreamError, kSeekStreamError } Cause; CInArchiveException(ECauseType cause): Cause(cause) {}};class CInArchiveInfo{public: UInt64 StartPosition; CByteBuffer Comment; void Clear() { Comment.SetCapacity(0); }};class CProgressVirt{public: STDMETHOD(SetCompleted)(const UInt64 *numFiles) PURE;};class CInArchive{ CMyComPtr<IInStream> m_Stream; UInt32 m_Signature; UInt64 m_StreamStartPosition; UInt64 m_Position; CInArchiveInfo m_ArchiveInfo; AString m_NameBuffer; bool FindAndReadMarker(const UInt64 *searchHeaderSizeLimit); bool ReadUInt32(UInt32 &signature); AString ReadFileName(UInt32 nameSize); HRESULT ReadBytes(void *data, UInt32 size, UInt32 *processedSize); bool ReadBytesAndTestSize(void *data, UInt32 size); void SafeReadBytes(void *data, UInt32 size); void ReadBuffer(CByteBuffer &buffer, UInt32 size); Byte ReadByte(); UInt16 ReadUInt16(); UInt32 ReadUInt32(); UInt64 ReadUInt64(); void IncreaseRealPosition(UInt64 addValue); void ThrowIncorrectArchiveException(); void ReadExtra(UInt32 extraSize, CExtraBlock &extraBlock, UInt64 &unpackSize, UInt64 &packSize, UInt64 &localHeaderOffset, UInt32 &diskStartNumber);public: HRESULT ReadHeaders(CObjectVector<CItemEx> &items, CProgressVirt *progress); bool Open(IInStream *inStream, const UInt64 *searchHeaderSizeLimit); void Close(); void GetArchiveInfo(CInArchiveInfo &archiveInfo) const; void DirectGetBytes(void *data, UInt32 num); bool SeekInArchive(UInt64 position); ISequentialInStream *CreateLimitedStream(UInt64 position, UInt64 size); IInStream* CreateStream();}; }} #endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?