1 // RegisterArc.h 2 3 #ifndef __REGISTER_ARC_H 4 #define __REGISTER_ARC_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(x) struct REGISTER_ARC_NAME(x) { \ 29 REGISTER_ARC_NAME(x)() { RegisterArc(&g_ArcInfo); }}; \ 30 static REGISTER_ARC_NAME(x) g_RegisterArc; 31 32 #endif 33