1// Copyright (C) 2019 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#ifndef CODECHUNK_H
5#define CODECHUNK_H
6
7#include <QtCore/qstring.h>
8
9QT_BEGIN_NAMESPACE
10
11// ### get rid of that class
12
13class CodeChunk
14{
15public:
16 CodeChunk() : m_hotspot(-1) { }
17
18 void append(const QString &lexeme);
19 void appendHotspot()
20 {
21 if (m_hotspot == -1)
22 m_hotspot = m_str.size();
23 }
24
25 [[nodiscard]] bool isEmpty() const { return m_str.isEmpty(); }
26 void clear() { m_str.clear(); }
27 [[nodiscard]] QString toString() const { return m_str; }
28 [[nodiscard]] QString left() const
29 {
30 return m_str.left(n: m_hotspot == -1 ? m_str.size() : m_hotspot);
31 }
32 [[nodiscard]] QString right() const
33 {
34 return m_str.mid(position: m_hotspot == -1 ? m_str.size() : m_hotspot);
35 }
36
37private:
38 QString m_str {};
39 qsizetype m_hotspot {};
40};
41
42inline bool operator==(const CodeChunk &c, const CodeChunk &d)
43{
44 return c.toString() == d.toString();
45}
46
47inline bool operator!=(const CodeChunk &c, const CodeChunk &d)
48{
49 return !(c == d);
50}
51
52inline bool operator<(const CodeChunk &c, const CodeChunk &d)
53{
54 return c.toString() < d.toString();
55}
56
57inline bool operator>(const CodeChunk &c, const CodeChunk &d)
58{
59 return d < c;
60}
61
62inline bool operator<=(const CodeChunk &c, const CodeChunk &d)
63{
64 return !(c > d);
65}
66
67inline bool operator>=(const CodeChunk &c, const CodeChunk &d)
68{
69 return !(c < d);
70}
71
72QT_END_NAMESPACE
73
74#endif
75

source code of qttools/src/qdoc/qdoc/codechunk.h