DirItem.h revision baa3858d3f5d128a5c8466b700098109edcad5f2
1// DirItem.h
2
3#ifndef __DIR_ITEM_H
4#define __DIR_ITEM_H
5
6#include "Common/MyString.h"
7#include "Common/Types.h"
8#include "../../Archive/IArchive.h"
9
10struct CDirItem
11{
12  UInt64 Size;
13  FILETIME CTime;
14  FILETIME ATime;
15  FILETIME MTime;
16  UString Name;
17  UInt32 Attrib;
18  int PhyParent;
19  int LogParent;
20
21  CDirItem(): PhyParent(-1), LogParent(-1) {}
22  bool IsDir() const { return (Attrib & FILE_ATTRIBUTE_DIRECTORY) != 0 ; }
23};
24
25class CDirItems
26{
27  UStringVector Prefixes;
28  CIntVector PhyParents;
29  CIntVector LogParents;
30
31  UString GetPrefixesPath(const CIntVector &parents, int index, const UString &name) const;
32public:
33  CObjectVector<CDirItem> Items;
34
35  int GetNumFolders() const { return Prefixes.Size(); }
36  UString GetPhyPath(int index) const;
37  UString GetLogPath(int index) const;
38
39  int AddPrefix(int phyParent, int logParent, const UString &prefix);
40  void DeleteLastPrefix();
41
42  void EnumerateDirectory(int phyParent, int logParent, const UString &phyPrefix,
43    UStringVector &errorPaths, CRecordVector<DWORD> &errorCodes);
44
45  void EnumerateDirItems2(
46    const UString &phyPrefix,
47    const UString &logPrefix,
48    const UStringVector &filePaths,
49    UStringVector &errorPaths, CRecordVector<DWORD> &errorCodes);
50
51  void ReserveDown();
52};
53
54struct CArcItem
55{
56  UInt64 Size;
57  FILETIME MTime;
58  UString Name;
59  bool IsDir;
60  bool SizeDefined;
61  bool MTimeDefined;
62  bool Censored;
63  UInt32 IndexInServer;
64  int TimeType;
65
66  CArcItem(): IsDir(false), SizeDefined(false), MTimeDefined(false), Censored(false), TimeType(-1) {}
67};
68
69#endif
70