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