mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-16 18:11:47 -06:00
22.00
This commit is contained in:
24
CPP/7zip/Common/RegisterArc.h
Normal file → Executable file
24
CPP/7zip/Common/RegisterArc.h
Normal file → Executable file
@@ -7,7 +7,7 @@
|
||||
|
||||
struct CArcInfo
|
||||
{
|
||||
UInt16 Flags;
|
||||
UInt32 Flags;
|
||||
Byte Id;
|
||||
Byte SignatureSize;
|
||||
UInt16 SignatureOffset;
|
||||
@@ -17,6 +17,8 @@ struct CArcInfo
|
||||
const char *Ext;
|
||||
const char *AddExt;
|
||||
|
||||
UInt32 TimeFlags;
|
||||
|
||||
Func_CreateInArchive CreateInArchive;
|
||||
Func_CreateOutArchive CreateOutArchive;
|
||||
Func_IsArc IsArc;
|
||||
@@ -39,22 +41,22 @@ void RegisterArc(const CArcInfo *arcInfo) throw();
|
||||
#define IMP_CreateArcOut static IOutArchive *CreateArcOut() { return new CHandler(); }
|
||||
#endif
|
||||
|
||||
#define REGISTER_ARC_V(n, e, ae, id, sigSize, sig, offs, flags, crIn, crOut, isArc) \
|
||||
static const CArcInfo g_ArcInfo = { flags, id, sigSize, offs, sig, n, e, ae, crIn, crOut, isArc } ; \
|
||||
#define REGISTER_ARC_V(n, e, ae, id, sigSize, sig, offs, flags, tf, crIn, crOut, isArc) \
|
||||
static const CArcInfo g_ArcInfo = { flags, id, sigSize, offs, sig, n, e, ae, tf, crIn, crOut, isArc } ; \
|
||||
|
||||
#define REGISTER_ARC_R(n, e, ae, id, sigSize, sig, offs, flags, crIn, crOut, isArc) \
|
||||
REGISTER_ARC_V(n, e, ae, id, sigSize, sig, offs, flags, crIn, crOut, isArc) \
|
||||
#define REGISTER_ARC_R(n, e, ae, id, sigSize, sig, offs, flags, tf, crIn, crOut, isArc) \
|
||||
REGISTER_ARC_V (n, e, ae, id, sigSize, sig, offs, flags, tf, crIn, crOut, isArc) \
|
||||
struct CRegisterArc { CRegisterArc() { RegisterArc(&g_ArcInfo); }}; \
|
||||
static CRegisterArc g_RegisterArc;
|
||||
|
||||
|
||||
#define REGISTER_ARC_I_CLS(cls, n, e, ae, id, sig, offs, flags, isArc) \
|
||||
IMP_CreateArcIn_2(cls) \
|
||||
REGISTER_ARC_R(n, e, ae, id, ARRAY_SIZE(sig), sig, offs, flags, CreateArc, NULL, isArc)
|
||||
REGISTER_ARC_R(n, e, ae, id, ARRAY_SIZE(sig), sig, offs, flags, 0, CreateArc, NULL, isArc)
|
||||
|
||||
#define REGISTER_ARC_I_CLS_NO_SIG(cls, n, e, ae, id, offs, flags, isArc) \
|
||||
IMP_CreateArcIn_2(cls) \
|
||||
REGISTER_ARC_R(n, e, ae, id, 0, NULL, offs, flags, CreateArc, NULL, isArc)
|
||||
REGISTER_ARC_R(n, e, ae, id, 0, NULL, offs, flags, 0, CreateArc, NULL, isArc)
|
||||
|
||||
#define REGISTER_ARC_I(n, e, ae, id, sig, offs, flags, isArc) \
|
||||
REGISTER_ARC_I_CLS(CHandler(), n, e, ae, id, sig, offs, flags, isArc)
|
||||
@@ -63,15 +65,15 @@ void RegisterArc(const CArcInfo *arcInfo) throw();
|
||||
REGISTER_ARC_I_CLS_NO_SIG(CHandler(), n, e, ae, id, offs, flags, isArc)
|
||||
|
||||
|
||||
#define REGISTER_ARC_IO(n, e, ae, id, sig, offs, flags, isArc) \
|
||||
#define REGISTER_ARC_IO(n, e, ae, id, sig, offs, flags, tf, isArc) \
|
||||
IMP_CreateArcIn \
|
||||
IMP_CreateArcOut \
|
||||
REGISTER_ARC_R(n, e, ae, id, ARRAY_SIZE(sig), sig, offs, flags, CreateArc, CreateArcOut, isArc)
|
||||
REGISTER_ARC_R(n, e, ae, id, ARRAY_SIZE(sig), sig, offs, flags, tf, CreateArc, CreateArcOut, isArc)
|
||||
|
||||
#define REGISTER_ARC_IO_DECREMENT_SIG(n, e, ae, id, sig, offs, flags, isArc) \
|
||||
#define REGISTER_ARC_IO_DECREMENT_SIG(n, e, ae, id, sig, offs, flags, tf, isArc) \
|
||||
IMP_CreateArcIn \
|
||||
IMP_CreateArcOut \
|
||||
REGISTER_ARC_V(n, e, ae, id, ARRAY_SIZE(sig), sig, offs, flags, CreateArc, CreateArcOut, isArc) \
|
||||
REGISTER_ARC_V(n, e, ae, id, ARRAY_SIZE(sig), sig, offs, flags, tf, CreateArc, CreateArcOut, isArc) \
|
||||
struct CRegisterArcDecSig { CRegisterArcDecSig() { sig[0]--; RegisterArc(&g_ArcInfo); }}; \
|
||||
static CRegisterArcDecSig g_RegisterArc;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user