Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / 7zip / Archive / 7z / 7zHeader.h
1 // 7z/7zHeader.h\r
2 \r
3 #ifndef __7Z_HEADER_H\r
4 #define __7Z_HEADER_H\r
5 \r
6 #include "../../../Common/Types.h"\r
7 \r
8 namespace NArchive {\r
9 namespace N7z {\r
10 \r
11 const int kSignatureSize = 6;\r
12 extern Byte kSignature[kSignatureSize];\r
13 \r
14 // #define _7Z_VOL\r
15 // 7z-MultiVolume is not finished yet.\r
16 // It can work already, but I still do not like some\r
17 // things of that new multivolume format.\r
18 // So please keep it commented.\r
19 \r
20 #ifdef _7Z_VOL\r
21 extern Byte kFinishSignature[kSignatureSize];\r
22 #endif\r
23 \r
24 struct CArchiveVersion\r
25 {\r
26   Byte Major;\r
27   Byte Minor;\r
28 };\r
29 \r
30 const Byte kMajorVersion = 0;\r
31 \r
32 struct CStartHeader\r
33 {\r
34   UInt64 NextHeaderOffset;\r
35   UInt64 NextHeaderSize;\r
36   UInt32 NextHeaderCRC;\r
37 };\r
38 \r
39 const UInt32 kStartHeaderSize = 20;\r
40 \r
41 #ifdef _7Z_VOL\r
42 struct CFinishHeader: public CStartHeader\r
43 {\r
44   UInt64 ArchiveStartOffset;  // data offset from end if that struct\r
45   UInt64 AdditionalStartBlockSize; // start  signature & start header size\r
46 };\r
47 \r
48 const UInt32 kFinishHeaderSize = kStartHeaderSize + 16;\r
49 #endif\r
50 \r
51 namespace NID\r
52 {\r
53   enum EEnum\r
54   {\r
55     kEnd,\r
56 \r
57     kHeader,\r
58 \r
59     kArchiveProperties,\r
60     \r
61     kAdditionalStreamsInfo,\r
62     kMainStreamsInfo,\r
63     kFilesInfo,\r
64     \r
65     kPackInfo,\r
66     kUnpackInfo,\r
67     kSubStreamsInfo,\r
68 \r
69     kSize,\r
70     kCRC,\r
71 \r
72     kFolder,\r
73 \r
74     kCodersUnpackSize,\r
75     kNumUnpackStream,\r
76 \r
77     kEmptyStream,\r
78     kEmptyFile,\r
79     kAnti,\r
80 \r
81     kName,\r
82     kCTime,\r
83     kATime,\r
84     kMTime,\r
85     kWinAttributes,\r
86     kComment,\r
87 \r
88     kEncodedHeader,\r
89 \r
90     kStartPos,\r
91     kDummy\r
92   };\r
93 }\r
94 \r
95 }}\r
96 \r
97 #endif\r