Quark  0.1
DiffChunk.h++
Go to the documentation of this file.
1 
2 #ifndef __libquark_diff_DiffChunk_hxx
3 #define __libquark_diff_DiffChunk_hxx
4 
5 #include <QScopedPointer>
6 #include <QVector>
7 
8 #include <quark/DiffRange.h++>
9 #include <quark/DiffTypes.h++>
10 
11 namespace quark {
12 namespace diff {
13 
14 class DiffResult;
15 
46 class DiffChunk
47 {
48  public:
49 
50  // The type of edit represented by this diff chunk.
53 
54  DiffChunk();
55 
57  bool yoursModified);
58 
60  bool yoursModified, const DiffRange& theirsRange,
61  bool theirsModified, bool conflict);
62 
63  ~DiffChunk();
64 
65  Type type(DiffRole role, DiffDirection dir) const;
66 
67  inline bool isUnchanged() const
68  { return(!_yoursModified && !_theirsModified); }
69 
70  bool isModified(DiffRole destination) const;
71 
72  inline bool isBothModified() const
73  { return(_theirsModified && _yoursModified); }
74 
75  inline bool isConflict() const
76  { return(_conflict); }
77 
78  inline const DiffRange& baseRange() const
79  { return(_baseRange); }
80 
81  inline DiffRange& baseRange()
82  { return(_baseRange); }
83 
84  // "source range" is an alias for "base range" (for 2-way diffs)
85  inline const DiffRange& sourceRange() const
86  { return(_baseRange); }
87 
89  { return(_baseRange); }
90 
91  // "destination range" is an alias for "yours range" (for 2-way diffs)
92  inline const DiffRange& destinationRange() const
93  { return(_yoursRange); }
94 
96  { return(_yoursRange); }
97 
98  inline const DiffRange& yoursRange() const
99  { return(_yoursRange); }
100 
102  { return(_yoursRange); }
103 
104  inline const DiffRange& theirsRange() const
105  { return(_theirsRange); }
106 
108  { return(_theirsRange); }
109 
110  const DiffRange& range(DiffRole role) const;
111 
113  { _subDiff.reset(subDiff); }
114 
115  inline const DiffResult* subDiff() const
116  { return(_subDiff.data()); }
117 
118  private:
119 
120  DiffRange _baseRange;
121  DiffRange _yoursRange;
122  DiffRange _theirsRange;
123  QScopedPointer<DiffResult> _subDiff;
124  bool _yoursModified;
125  bool _theirsModified;
126  bool _conflict;
127 
128  Q_DISABLE_COPY(DiffChunk);
129 };
130 
131 } // namespace diff
132 } // namespace quark
133 
134 #endif // __libquark_diff_DiffChunk_hxx
135 
void setSubDiff(DiffResult *subDiff)
Definition: DiffChunk.h++:112
TODO: rewrite comment A range of elements in a DiffSequence.
Definition: DiffRange.h++:17
bool isUnchanged() const
Definition: DiffChunk.h++:67
DiffRange & destinationRange()
Definition: DiffChunk.h++:95
const DiffResult * subDiff() const
Definition: DiffChunk.h++:115
Definition: DiffChunk.h++:51
const DiffRange & theirsRange() const
Definition: DiffChunk.h++:104
const DiffRange & range(DiffRole role) const
const DiffRange & sourceRange() const
Definition: DiffChunk.h++:85
Definition: DiffChunk.h++:51
bool isBothModified() const
Definition: DiffChunk.h++:72
bool isModified(DiffRole destination) const
const DiffRange & destinationRange() const
Definition: DiffChunk.h++:92
Type type(DiffRole role, DiffDirection dir) const
Definition: BarChartView.h++:6
Type
Definition: DiffChunk.h++:51
const DiffRange & baseRange() const
Definition: DiffChunk.h++:78
DiffRange & theirsRange()
Definition: DiffChunk.h++:107
DiffRange & yoursRange()
Definition: DiffChunk.h++:101
DiffRange & baseRange()
Definition: DiffChunk.h++:81
Definition: DiffChunk.h++:52
bool isConflict() const
Definition: DiffChunk.h++:75
DiffDirection
Definition: DiffTypes.h++:29
DiffRange & sourceRange()
Definition: DiffChunk.h++:88
DiffRole
Definition: DiffTypes.h++:11
const DiffRange & yoursRange() const
Definition: DiffChunk.h++:98
TODO: rewrite comment A DiffChunk maps a DiffRange in one DiffSequence (the "base") to a correspondin...
Definition: DiffChunk.h++:46
Definition: DiffChunk.h++:51
Definition: DiffResult.h++:13
Definition: DiffChunk.h++:51