OLD | NEW |
| (Empty) |
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 | |
OLD | NEW |