1370b324cSopenharmony_ci// UpdateAction.h
2370b324cSopenharmony_ci
3370b324cSopenharmony_ci#ifndef ZIP7_INC_UPDATE_ACTION_H
4370b324cSopenharmony_ci#define ZIP7_INC_UPDATE_ACTION_H
5370b324cSopenharmony_ci
6370b324cSopenharmony_cinamespace NUpdateArchive {
7370b324cSopenharmony_ci
8370b324cSopenharmony_ci  namespace NPairState
9370b324cSopenharmony_ci  {
10370b324cSopenharmony_ci    const unsigned kNumValues = 7;
11370b324cSopenharmony_ci    enum EEnum
12370b324cSopenharmony_ci    {
13370b324cSopenharmony_ci      kNotMasked = 0,
14370b324cSopenharmony_ci      kOnlyInArchive,
15370b324cSopenharmony_ci      kOnlyOnDisk,
16370b324cSopenharmony_ci      kNewInArchive,
17370b324cSopenharmony_ci      kOldInArchive,
18370b324cSopenharmony_ci      kSameFiles,
19370b324cSopenharmony_ci      kUnknowNewerFiles
20370b324cSopenharmony_ci    };
21370b324cSopenharmony_ci  }
22370b324cSopenharmony_ci
23370b324cSopenharmony_ci  namespace NPairAction
24370b324cSopenharmony_ci  {
25370b324cSopenharmony_ci    enum EEnum
26370b324cSopenharmony_ci    {
27370b324cSopenharmony_ci      kIgnore = 0,
28370b324cSopenharmony_ci      kCopy,
29370b324cSopenharmony_ci      kCompress,
30370b324cSopenharmony_ci      kCompressAsAnti
31370b324cSopenharmony_ci    };
32370b324cSopenharmony_ci  }
33370b324cSopenharmony_ci
34370b324cSopenharmony_ci  struct CActionSet
35370b324cSopenharmony_ci  {
36370b324cSopenharmony_ci    NPairAction::EEnum StateActions[NPairState::kNumValues];
37370b324cSopenharmony_ci
38370b324cSopenharmony_ci    bool IsEqualTo(const CActionSet &a) const
39370b324cSopenharmony_ci    {
40370b324cSopenharmony_ci      for (unsigned i = 0; i < NPairState::kNumValues; i++)
41370b324cSopenharmony_ci        if (StateActions[i] != a.StateActions[i])
42370b324cSopenharmony_ci          return false;
43370b324cSopenharmony_ci      return true;
44370b324cSopenharmony_ci    }
45370b324cSopenharmony_ci
46370b324cSopenharmony_ci    bool NeedScanning() const
47370b324cSopenharmony_ci    {
48370b324cSopenharmony_ci      unsigned i;
49370b324cSopenharmony_ci      for (i = 0; i < NPairState::kNumValues; i++)
50370b324cSopenharmony_ci        if (StateActions[i] == NPairAction::kCompress)
51370b324cSopenharmony_ci          return true;
52370b324cSopenharmony_ci      for (i = 1; i < NPairState::kNumValues; i++)
53370b324cSopenharmony_ci        if (StateActions[i] != NPairAction::kIgnore)
54370b324cSopenharmony_ci          return true;
55370b324cSopenharmony_ci      return false;
56370b324cSopenharmony_ci    }
57370b324cSopenharmony_ci  };
58370b324cSopenharmony_ci
59370b324cSopenharmony_ci  extern const CActionSet k_ActionSet_Add;
60370b324cSopenharmony_ci  extern const CActionSet k_ActionSet_Update;
61370b324cSopenharmony_ci  extern const CActionSet k_ActionSet_Fresh;
62370b324cSopenharmony_ci  extern const CActionSet k_ActionSet_Sync;
63370b324cSopenharmony_ci  extern const CActionSet k_ActionSet_Delete;
64370b324cSopenharmony_ci}
65370b324cSopenharmony_ci
66370b324cSopenharmony_ci#endif
67