misc/libphysfs/lzma/CPP/7zip/Common/RegisterArc.h
changeset 13881 99b265e0d1d0
parent 13880 5f819b90d479
child 13882 b172a5d40eee
equal deleted inserted replaced
13880:5f819b90d479 13881:99b265e0d1d0
     1 // RegisterArc.h
       
     2 
       
     3 #ifndef __REGISTERARC_H
       
     4 #define __REGISTERARC_H
       
     5 
       
     6 #include "../Archive/IArchive.h"
       
     7 
       
     8 typedef IInArchive * (*CreateInArchiveP)();
       
     9 typedef IOutArchive * (*CreateOutArchiveP)();
       
    10 
       
    11 struct CArcInfo
       
    12 {
       
    13   const wchar_t *Name;
       
    14   const wchar_t *Ext;
       
    15   const wchar_t *AddExt;
       
    16   Byte ClassId;
       
    17   Byte Signature[16];
       
    18   int SignatureSize;
       
    19   bool KeepName;
       
    20   CreateInArchiveP CreateInArchive;
       
    21   CreateOutArchiveP CreateOutArchive;
       
    22 };
       
    23 
       
    24 void RegisterArc(const CArcInfo *arcInfo);
       
    25 
       
    26 #define REGISTER_ARC_NAME(x) CRegister ## x 
       
    27 
       
    28 #define REGISTER_ARC_DEC_SIG(x) struct REGISTER_ARC_NAME(x) { \
       
    29     REGISTER_ARC_NAME(x)() { g_ArcInfo.Signature[0]--; RegisterArc(&g_ArcInfo); }}; \
       
    30     static REGISTER_ARC_NAME(x) g_RegisterArc;
       
    31 
       
    32 #define REGISTER_ARC(x) struct REGISTER_ARC_NAME(x) { \
       
    33     REGISTER_ARC_NAME(x)() { RegisterArc(&g_ArcInfo); }}; \
       
    34     static REGISTER_ARC_NAME(x) g_RegisterArc;
       
    35 
       
    36 #endif