Quark  0.1
DiffSequence.h++
Go to the documentation of this file.
1 
2 #ifndef __libquark_diff_DiffSequence_hxx
3 #define __libquark_diff_DiffSequence_hxx
4 
5 #include <QString>
6 #include <QStringRef>
7 #include <QVector>
8 
9 #include <quark/Quark.h++>
10 
11 namespace quark {
12 namespace diff {
13 
14 class DiffRange;
15 
21 {
22  public:
23 
24  virtual ~DiffSequence()
25  { }
26 
27  inline void setText(const QStringRef &text)
28  {
29  _text = text;
30  _elements.clear();
31  split(_text, _elements);
32  }
33 
34  inline const QStringRef& text() const
35  { return(_text); }
36 
37  inline int length() const
38  { return(_elements.size()); }
39 
40  const QStringRef& at(int index) const
41  { return(_elements.at(index)); }
42 
43  inline virtual int mapStartIndex(int startIndex) const
44  { return(startIndex); }
45 
46  inline virtual int mapEndIndex(int endIndex) const
47  { return(endIndex); }
48 
49  inline bool isEmpty() const
50  { return(length() == 0); }
51 
52  inline virtual bool canRecurse() const
53  { return(_canRecurse); }
54 
55  inline virtual DiffSequence* recurse(const DiffRange& range) const
56  { return(NULL); }
57 
58  protected:
59 
60  DiffSequence(bool canRecurse = false)
61  : _canRecurse(canRecurse)
62  { }
63 
64  virtual void split(const QStringRef& text, QVector<QStringRef>& elements)
65  = 0;
66 
67  private:
68 
69  QStringRef _text;
70  QVector<QStringRef> _elements;
71  bool _canRecurse;
72 
73  Q_DISABLE_COPY(DiffSequence);
74 };
75 
76 } // namespace diff
77 } // namespace quark
78 
79 #endif // __libquark_diff_DiffSequence_hxx
bool isEmpty() const
Definition: DiffSequence.h++:49
TODO: rewrite comment A range of elements in a DiffSequence.
Definition: DiffRange.h++:17
const QStringRef & text() const
Definition: DiffSequence.h++:34
virtual ~DiffSequence()
Definition: DiffSequence.h++:24
Definition: BarChartView.h++:6
virtual bool canRecurse() const
Definition: DiffSequence.h++:52
TODO: rewrite comment Abstract base class for sequences that can be diffed.
Definition: DiffSequence.h++:20
void setText(const QStringRef &text)
Definition: DiffSequence.h++:27
const QStringRef & at(int index) const
Definition: DiffSequence.h++:40
DiffSequence(bool canRecurse=false)
Definition: DiffSequence.h++:60
int length() const
Definition: DiffSequence.h++:37
#define LIBQUARK_API
Definition: Quark.h++:18
virtual DiffSequence * recurse(const DiffRange &range) const
Definition: DiffSequence.h++:55
virtual int mapStartIndex(int startIndex) const
Definition: DiffSequence.h++:43
virtual int mapEndIndex(int endIndex) const
Definition: DiffSequence.h++:46