1 // UpdateProduce.h
2 
3 #ifndef __UPDATE_PRODUCE_H
4 #define __UPDATE_PRODUCE_H
5 
6 #include "UpdatePair.h"
7 
8 struct CUpdatePair2
9 {
10   bool NewData;
11   bool NewProps;
12   bool UseArcProps; // if (UseArcProps && NewProps), we want to change only some properties.
13   bool IsAnti; // if (!IsAnti) we use other ways to detect Anti status
14 
15   int DirIndex;
16   int ArcIndex;
17   int NewNameIndex;
18 
19   bool IsMainRenameItem;
20 
SetAs_NoChangeArcItemCUpdatePair221   void SetAs_NoChangeArcItem(int arcIndex)
22   {
23     NewData = NewProps = false;
24     UseArcProps = true;
25     IsAnti = false;
26     ArcIndex = arcIndex;
27   }
28 
ExistOnDiskCUpdatePair229   bool ExistOnDisk() const { return DirIndex != -1; }
ExistInArchiveCUpdatePair230   bool ExistInArchive() const { return ArcIndex != -1; }
31 
CUpdatePair2CUpdatePair232   CUpdatePair2():
33       NewData(false),
34       NewProps(false),
35       UseArcProps(false),
36       IsAnti(false),
37       DirIndex(-1),
38       ArcIndex(-1),
39       NewNameIndex(-1),
40       IsMainRenameItem(false)
41       {}
42 };
43 
44 struct IUpdateProduceCallback
45 {
46   virtual HRESULT ShowDeleteFile(unsigned arcIndex) = 0;
47 };
48 
49 void UpdateProduce(
50     const CRecordVector<CUpdatePair> &updatePairs,
51     const NUpdateArchive::CActionSet &actionSet,
52     CRecordVector<CUpdatePair2> &operationChain,
53     IUpdateProduceCallback *callback);
54 
55 #endif
56