chore: initial commit (extracted from Launchers monorepo)

Plugin: ns7zip v2.0.0
Architectures: x86-ansi, x86-unicode, amd64-unicode
License: LGPL-2.1-or-later
This commit is contained in:
Simone
2026-04-29 14:07:51 +02:00
commit d074cc7c07
3848 changed files with 1076682 additions and 0 deletions
@@ -0,0 +1,134 @@
// HandlerCont.h
#ifndef ZIP7_INC_HANDLER_CONT_H
#define ZIP7_INC_HANDLER_CONT_H
#include "../../Common/MyCom.h"
#include "IArchive.h"
namespace NArchive {
#define Z7_IFACEM_IInArchive_Cont(x) \
x(Open(IInStream *stream, const UInt64 *maxCheckStartPosition, IArchiveOpenCallback *openCallback)) \
x(Close()) \
x(GetNumberOfItems(UInt32 *numItems)) \
x(GetProperty(UInt32 index, PROPID propID, PROPVARIANT *value)) \
/* x(Extract(const UInt32 *indices, UInt32 numItems, Int32 testMode, IArchiveExtractCallback *extractCallback)) */ \
x(GetArchiveProperty(PROPID propID, PROPVARIANT *value)) \
x(GetNumberOfProperties(UInt32 *numProps)) \
x(GetPropertyInfo(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType)) \
x(GetNumberOfArchiveProperties(UInt32 *numProps)) \
x(GetArchivePropertyInfo(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType)) \
// #define Z7_COM7F_PUREO(f) virtual Z7_COM7F_IMF(f) Z7_override =0;
// #define Z7_COM7F_PUREO2(t, f) virtual Z7_COM7F_IMF2(t, f) Z7_override =0;
class CHandlerCont:
public IInArchive,
public IInArchiveGetStream,
public CMyUnknownImp
{
Z7_COM_UNKNOWN_IMP_2(
IInArchive,
IInArchiveGetStream)
/*
Z7_IFACEM_IInArchive_Cont(Z7_COM7F_PUREO)
// Z7_IFACE_COM7_PURE(IInArchive_Cont)
*/
Z7_COM7F_IMP(Extract(const UInt32 *indices, UInt32 numItems, Int32 testMode, IArchiveExtractCallback *extractCallback))
protected:
Z7_IFACE_COM7_IMP(IInArchiveGetStream)
CMyComPtr<IInStream> _stream;
virtual int GetItem_ExtractInfo(UInt32 index, UInt64 &pos, UInt64 &size) const = 0;
// destructor must be virtual for this class
virtual ~CHandlerCont() {}
};
#define Z7_IFACEM_IInArchive_Img(x) \
/* x(Open(IInStream *stream, const UInt64 *maxCheckStartPosition, IArchiveOpenCallback *openCallback)) */ \
x(Close()) \
/* x(GetNumberOfItems(UInt32 *numItems)) */ \
x(GetProperty(UInt32 index, PROPID propID, PROPVARIANT *value)) \
/* x(Extract(const UInt32 *indices, UInt32 numItems, Int32 testMode, IArchiveExtractCallback *extractCallback)) */ \
x(GetArchiveProperty(PROPID propID, PROPVARIANT *value)) \
x(GetNumberOfProperties(UInt32 *numProps)) \
x(GetPropertyInfo(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType)) \
x(GetNumberOfArchiveProperties(UInt32 *numProps)) \
x(GetArchivePropertyInfo(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType)) \
class CHandlerImg:
public IInArchive,
public IInArchiveGetStream,
public IInStream,
public CMyUnknownImp
{
Z7_COM_UNKNOWN_IMP_4(
IInArchive,
IInArchiveGetStream,
ISequentialInStream,
IInStream)
Z7_COM7F_IMP(Open(IInStream *stream, const UInt64 *maxCheckStartPosition, IArchiveOpenCallback *openCallback))
Z7_COM7F_IMP(GetNumberOfItems(UInt32 *numItems))
Z7_COM7F_IMP(Extract(const UInt32 *indices, UInt32 numItems, Int32 testMode, IArchiveExtractCallback *extractCallback))
Z7_IFACE_COM7_IMP(IInStream)
// Z7_IFACEM_IInArchive_Img(Z7_COM7F_PUREO)
protected:
bool _stream_unavailData;
bool _stream_unsupportedMethod;
bool _stream_dataError;
// bool _stream_UsePackSize;
// UInt64 _stream_PackSize;
UInt64 _virtPos;
UInt64 _posInArc;
UInt64 _size;
CMyComPtr<IInStream> Stream;
const char *_imgExt;
void Reset_PosInArc() { _posInArc = (UInt64)0 - 1; }
void Reset_VirtPos() { _virtPos = (UInt64)0; }
void ClearStreamVars()
{
_stream_unavailData = false;
_stream_unsupportedMethod = false;
_stream_dataError = false;
// _stream_UsePackSize = false;
// _stream_PackSize = 0;
}
void Clear_HandlerImg_Vars(); // it doesn't Release (Stream) var.
virtual HRESULT Open2(IInStream *stream, IArchiveOpenCallback *openCallback) = 0;
virtual void CloseAtError();
// returns (true), if Get_PackSizeProcessed() is required in Extract()
virtual bool Init_PackSizeProcessed()
{
return false;
}
public:
virtual bool Get_PackSizeProcessed(UInt64 &size)
{
size = 0;
return false;
}
CHandlerImg();
// destructor must be virtual for this class
virtual ~CHandlerImg() {}
};
HRESULT ReadZeroTail(ISequentialInStream *stream, bool &areThereNonZeros, UInt64 &numZeros, UInt64 maxSize);
}
#endif