Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Side by Side Diff: third_party/lzma/v4_65/files/CPP/7zip/Archive/7z/7zOut.h

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // 7z/Out.h
2
3 #ifndef __7Z_OUT_H
4 #define __7Z_OUT_H
5
6 #include "7zHeader.h"
7 #include "7zItem.h"
8 #include "7zCompressionMode.h"
9 #include "7zEncode.h"
10
11 #include "../../Common/OutBuffer.h"
12
13 namespace NArchive {
14 namespace N7z {
15
16 class CWriteBufferLoc
17 {
18 Byte *_data;
19 size_t _size;
20 size_t _pos;
21 public:
22 CWriteBufferLoc(): _size(0), _pos(0) {}
23 void Init(Byte *data, size_t size)
24 {
25 _data = data;
26 _size = size;
27 _pos = 0;
28 }
29 void WriteBytes(const void *data, size_t size)
30 {
31 if (size > _size - _pos)
32 throw 1;
33 memcpy(_data + _pos, data, size);
34 _pos += size;
35 }
36 void WriteByte(Byte b)
37 {
38 if (_size == _pos)
39 throw 1;
40 _data[_pos++] = b;
41 }
42 size_t GetPos() const { return _pos; }
43 };
44
45 struct CHeaderOptions
46 {
47 bool CompressMainHeader;
48 bool WriteCTime;
49 bool WriteATime;
50 bool WriteMTime;
51
52 CHeaderOptions():
53 CompressMainHeader(true),
54 WriteCTime(false),
55 WriteATime(false),
56 WriteMTime(true)
57 {}
58 };
59
60 class COutArchive
61 {
62 UInt64 _prefixHeaderPos;
63
64 HRESULT WriteDirect(const void *data, UInt32 size);
65
66 UInt64 GetPos() const;
67 void WriteBytes(const void *data, size_t size);
68 void WriteBytes(const CByteBuffer &data) { WriteBytes(data, data.GetCapacity() ); }
69 void WriteByte(Byte b);
70 void WriteUInt32(UInt32 value);
71 void WriteUInt64(UInt64 value);
72 void WriteNumber(UInt64 value);
73 void WriteID(UInt64 value) { WriteNumber(value); }
74
75 void WriteFolder(const CFolder &folder);
76 HRESULT WriteFileHeader(const CFileItem &itemInfo);
77 void WriteBoolVector(const CBoolVector &boolVector);
78 void WriteHashDigests(
79 const CRecordVector<bool> &digestsDefined,
80 const CRecordVector<UInt32> &hashDigests);
81
82 void WritePackInfo(
83 UInt64 dataOffset,
84 const CRecordVector<UInt64> &packSizes,
85 const CRecordVector<bool> &packCRCsDefined,
86 const CRecordVector<UInt32> &packCRCs);
87
88 void WriteUnpackInfo(const CObjectVector<CFolder> &folders);
89
90 void WriteSubStreamsInfo(
91 const CObjectVector<CFolder> &folders,
92 const CRecordVector<CNum> &numUnpackStreamsInFolders,
93 const CRecordVector<UInt64> &unpackSizes,
94 const CRecordVector<bool> &digestsDefined,
95 const CRecordVector<UInt32> &hashDigests);
96
97 void SkipAlign(unsigned pos, unsigned alignSize);
98 void WriteAlignedBoolHeader(const CBoolVector &v, int numDefined, Byte type, u nsigned itemSize);
99 void WriteUInt64DefVector(const CUInt64DefVector &v, Byte type);
100
101 HRESULT EncodeStream(
102 DECL_EXTERNAL_CODECS_LOC_VARS
103 CEncoder &encoder, const Byte *data, size_t dataSize,
104 CRecordVector<UInt64> &packSizes, CObjectVector<CFolder> &folders);
105 HRESULT EncodeStream(
106 DECL_EXTERNAL_CODECS_LOC_VARS
107 CEncoder &encoder, const CByteBuffer &data,
108 CRecordVector<UInt64> &packSizes, CObjectVector<CFolder> &folders);
109 void WriteHeader(
110 const CArchiveDatabase &db,
111 const CHeaderOptions &headerOptions,
112 UInt64 &headerOffset);
113
114 bool _countMode;
115 bool _writeToStream;
116 size_t _countSize;
117 UInt32 _crc;
118 COutBuffer _outByte;
119 CWriteBufferLoc _outByte2;
120
121 #ifdef _7Z_VOL
122 bool _endMarker;
123 #endif
124
125 HRESULT WriteSignature();
126 #ifdef _7Z_VOL
127 HRESULT WriteFinishSignature();
128 #endif
129 HRESULT WriteStartHeader(const CStartHeader &h);
130 #ifdef _7Z_VOL
131 HRESULT WriteFinishHeader(const CFinishHeader &h);
132 #endif
133 CMyComPtr<IOutStream> Stream;
134 public:
135
136 COutArchive() { _outByte.Create(1 << 16); }
137 CMyComPtr<ISequentialOutStream> SeqStream;
138 HRESULT Create(ISequentialOutStream *stream, bool endMarker);
139 void Close();
140 HRESULT SkeepPrefixArchiveHeader();
141 HRESULT WriteDatabase(
142 DECL_EXTERNAL_CODECS_LOC_VARS
143 const CArchiveDatabase &db,
144 const CCompressionMethodMode *options,
145 const CHeaderOptions &headerOptions);
146
147 #ifdef _7Z_VOL
148 static UInt32 GetVolHeadersSize(UInt64 dataSize, int nameLength = 0, bool prop s = false);
149 static UInt64 GetVolPureSize(UInt64 volSize, int nameLength = 0, bool props = false);
150 #endif
151
152 };
153
154 }}
155
156 #endif
OLDNEW
« no previous file with comments | « third_party/lzma/v4_65/files/CPP/7zip/Archive/7z/7zItem.h ('k') | third_party/lzma/v4_65/files/CPP/7zip/Archive/7z/7zOut.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698