3
#ifndef __ARCHIVE_COM_IN_H
4
#define __ARCHIVE_COM_IN_H
6
#include "Common/MyString.h"
7
#include "Common/Buffer.h"
16
CUInt32Buf(): _buf(0) {}
17
~CUInt32Buf() { Free(); }
19
bool Allocate(UInt32 numItems);
20
operator UInt32 *() const { return _buf; };
25
const UInt32 kFree = 0xFFFFFFFF;
26
const UInt32 kEndOfChain = 0xFFFFFFFE;
27
const UInt32 kFatSector = 0xFFFFFFFD;
28
const UInt32 kMatSector = 0xFFFFFFFC;
29
const UInt32 kMaxValue = 0xFFFFFFFA;
34
const Byte kEmpty = 0;
35
const Byte kStorage = 1;
36
const Byte kStream = 2;
37
const Byte kLockBytes = 3;
38
const Byte kProperty = 4;
39
const Byte kRootStorage = 5;
42
const UInt32 kNameSizeMax = 64;
46
Byte Name[kNameSizeMax];
49
FILETIME CreationTime;
50
FILETIME LastWriteTime;
58
bool IsEmpty() const { return Type == NItemType::kEmpty; }
59
bool IsDir() const { return Type == NItemType::kStorage || Type == NItemType::kRootStorage; }
71
HRESULT AddNode(int parent, UInt32 did);
77
UInt32 NumSectorsInMiniStream;
82
CObjectVector<CItem> Items;
83
CRecordVector<CRef> Refs;
85
UInt32 LongStreamMinSize;
87
int MiniSectorSizeBits;
98
bool IsLargeStream(UInt64 size) { return size >= LongStreamMinSize; }
99
UString GetItemPath(UInt32 index) const;
102
HRESULT OpenArchive(IInStream *inStream, CDatabase &database);