1baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// UpdateAction.h
2baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
3baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifndef __UPDATE_ACTION_H
4baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define __UPDATE_ACTION_H
5baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
6baa3858d3f5d128a5c8466b700098109edcad5f2repo syncnamespace NUpdateArchive {
7baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
8baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  namespace NPairState
9baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  {
10cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky    const unsigned kNumValues = 7;
11baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    enum EEnum
12baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    {
13baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      kNotMasked = 0,
14baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      kOnlyInArchive,
15baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      kOnlyOnDisk,
16baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      kNewInArchive,
17baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      kOldInArchive,
18baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      kSameFiles,
19baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      kUnknowNewerFiles
20baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    };
21baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  }
22baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
23baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  namespace NPairAction
24baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  {
25baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    enum EEnum
26baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    {
27baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      kIgnore = 0,
28baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      kCopy,
29baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      kCompress,
30baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      kCompressAsAnti
31baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    };
32baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  }
33baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
34baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  struct CActionSet
35baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  {
36baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    NPairAction::EEnum StateActions[NPairState::kNumValues];
37cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky
38cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky    const bool IsEqualTo(const CActionSet &a) const
39cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky    {
40cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky      for (unsigned i = 0; i < NPairState::kNumValues; i++)
41cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky        if (StateActions[i] != a.StateActions[i])
42cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky          return false;
43cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky      return true;
44cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky    }
45cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky
46baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    bool NeedScanning() const
47baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    {
48cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky      unsigned i;
49baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      for (i = 0; i < NPairState::kNumValues; i++)
50baa3858d3f5d128a5c8466b700098109edcad5f2repo sync        if (StateActions[i] == NPairAction::kCompress)
51baa3858d3f5d128a5c8466b700098109edcad5f2repo sync          return true;
52baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      for (i = 1; i < NPairState::kNumValues; i++)
53baa3858d3f5d128a5c8466b700098109edcad5f2repo sync        if (StateActions[i] != NPairAction::kIgnore)
54baa3858d3f5d128a5c8466b700098109edcad5f2repo sync          return true;
55baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      return false;
56baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    }
57baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  };
58baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
59cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky  extern const CActionSet k_ActionSet_Add;
60cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky  extern const CActionSet k_ActionSet_Update;
61cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky  extern const CActionSet k_ActionSet_Fresh;
62cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky  extern const CActionSet k_ActionSet_Sync;
63cd66d540cead3f8200b0c73bad9c276d67896c3dDavid Srbecky  extern const CActionSet k_ActionSet_Delete;
64baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}
65baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
66baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif
67