Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qcollator.h
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4// Qt-Security score:significant reason:trivial-impl-only
5
6#ifndef QCOLLATOR_H
7#define QCOLLATOR_H
8
9#include <QtCore/qstring.h>
10#include <QtCore/qstringlist.h>
11#include <QtCore/qlocale.h>
12
14
17QT_DECLARE_QESDP_SPECIALIZATION_DTOR(QCollatorSortKeyPrivate)
18
19class Q_CORE_EXPORT QCollatorSortKey
20{
21 friend class QCollatorPrivate;
22public:
23 QCollatorSortKey() = delete;
24 QCollatorSortKey(const QCollatorSortKey &other);
25 QCollatorSortKey(QCollatorSortKey &&other) noexcept = default;
26 ~QCollatorSortKey();
27 QCollatorSortKey &operator=(const QCollatorSortKey &other);
28 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QCollatorSortKey)
29 void swap(QCollatorSortKey &other) noexcept
30 { d.swap(other.d); }
31
32 int compare(const QCollatorSortKey &key) const noexcept;
33
34protected:
35 QCollatorSortKey(QCollatorSortKeyPrivate*);
36
37 QExplicitlySharedDataPointer<QCollatorSortKeyPrivate> d;
38
39private:
40 friend bool comparesEqual(const QCollatorSortKey &lhs, const QCollatorSortKey &rhs) noexcept
41 { return lhs.compare(rhs) == 0; }
42 friend Qt::weak_ordering
43 compareThreeWay(const QCollatorSortKey &lhs, const QCollatorSortKey &rhs) noexcept
44 { return Qt::compareThreeWay(lhs.compare(rhs), 0); }
45 Q_DECLARE_WEAKLY_ORDERED(QCollatorSortKey)
46};
47
48class Q_CORE_EXPORT QCollator
49{
50public:
51 enum class CollationOption {
52 CaseInsensitive = 0x1,
53 IgnorePunctuation = 0x2,
54 NumericSort = 0x4,
55 DiacriticInsensitive = 0x8,
56 WidthInsensitive = 0x10,
57 };
58 Q_DECLARE_FLAGS(CollationOptions, CollationOption)
59
60 QCollator();
61 explicit QCollator(const QLocale &locale);
62 QCollator(const QCollator &);
63 ~QCollator();
64 QCollator &operator=(const QCollator &);
65 QCollator(QCollator &&other) noexcept
66 : d(other.d) { other.d = nullptr; }
67 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QCollator)
68
69 void swap(QCollator &other) noexcept
70 { qt_ptr_swap(d, other.d); }
71
72 void setLocale(const QLocale &locale);
73 QLocale locale() const;
74
75 Qt::CaseSensitivity caseSensitivity() const;
76 void setCaseSensitivity(Qt::CaseSensitivity cs);
77
78 void setNumericMode(bool on);
79 bool numericMode() const;
80
81 void setIgnorePunctuation(bool on);
82 bool ignorePunctuation() const;
83
84 void setOptions(CollationOptions options);
85 CollationOptions options() const;
86
87 int compare(const QString &s1, const QString &s2) const
88 { return compare(QStringView(s1), QStringView(s2)); }
89#if QT_CORE_REMOVED_SINCE(6, 4) && QT_POINTER_SIZE != 4
90 int compare(const QChar *s1, int len1, const QChar *s2, int len2) const
91 { return compare(QStringView(s1, len1), QStringView(s2, len2)); }
92#endif
93 int compare(const QChar *s1, qsizetype len1, const QChar *s2, qsizetype len2) const
94 { return compare(QStringView(s1, len1), QStringView(s2, len2)); }
95
96 bool operator()(const QString &s1, const QString &s2) const
97 { return compare(s1, s2) < 0; }
98 int compare(QStringView s1, QStringView s2) const;
99
100 bool operator()(QStringView s1, QStringView s2) const
101 { return compare(s1, s2) < 0; }
102
103 QCollatorSortKey sortKey(const QString &string) const;
104
105 static int defaultCompare(QStringView s1, QStringView s2);
106 static QCollatorSortKey defaultSortKey(QStringView key);
107
108private:
109 friend Q_CORE_EXPORT bool comparesEqual(const QCollator &lhs, const QCollator &rhs) noexcept;
110 Q_DECLARE_EQUALITY_COMPARABLE(QCollator)
111
112 mutable QCollatorPrivate *d;
113
114 void detach();
115};
116
118Q_DECLARE_SHARED(QCollator)
119Q_DECLARE_OPERATORS_FOR_FLAGS(QCollator::CollationOptions)
120
121QT_END_NAMESPACE
122
123#endif // QCOLLATOR_P_H
The QAbstractFileEngineIterator class provides an iterator interface for custom file engines.
virtual ~QAbstractFileEnginePrivate()
QAbstractFileEnginePrivate(QAbstractFileEngine *q)
QAbstractFileEngine *const q_ptr
\inmodule QtCore \reentrant
\inmodule QtCore
Definition qcollator.h:20
\inmodule QtCore
Definition qcollator.h:49
\inmodule QtCore
Definition qdirlisting.h:71
QDirPrivate(const QDirPrivate &copy)
Definition qdir.cpp:106
@ UrlNormalizationMode
Definition qdir_p.h:34
@ RemotePath
Definition qdir_p.h:35
MetaDataClearing
Definition qdir_p.h:64
@ IncludingMetaData
Definition qdir_p.h:64
void clearCache(MetaDataClearing mode)
Definition qdir.cpp:471
void initFileLists(const QDir &dir) const
Definition qdir.cpp:456
bool exists() const
Definition qdir.cpp:123
QString resolveAbsoluteEntry() const
Definition qdir.cpp:179
bool operator()(const QDirSortItem &, const QDirSortItem &) const
Definition qdir.cpp:259
QDirSortItemComparator(QDir::SortFlags flags, QCollator *coll=nullptr)
Definition qdir.cpp:233
int compareStrings(const QString &a, const QString &b, Qt::CaseSensitivity cs) const
Definition qdir.cpp:249
\inmodule QtCore
\inmodule QtCore
Definition qmutex.h:347
Combined button and popup list for selecting options.
std::unique_ptr< QAbstractFileEngine > qt_custom_file_engine_handler_create(const QString &path)
static void appendIfMatchesNonDirListingFlags(const QDirListing::DirEntry &dirEntry, QDir::Filters filters, QFileInfoList &l)
Definition qdir.cpp:403
static qsizetype rootLength(QStringView name, QDirPrivate::PathNormalizations flags)
Definition qdir.cpp:57
static bool qt_cleanPath(QString *path)
Definition qdir.cpp:2537
QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2620
QDebug operator<<(QDebug debug, const QDir &dir)
Definition qdir.cpp:2671
static QDebug operator<<(QDebug debug, QDir::SortFlags sorting)
Definition qdir.cpp:2647
bool qt_isPathNormalized(const QString &path, QDirPrivate::PathNormalizations flags) noexcept
Definition qdir.cpp:2387
bool comparesEqual(const QDir &lhs, const QDir &rhs)
Definition qdir.cpp:1974
static bool treatAsAbsolute(const QString &path)
Definition qdir.cpp:869
static bool checkPermissions(const QDirListing::DirEntry &dirEntry, QDir::Filters filters)
Definition qdir.cpp:365
bool qt_normalizePathSegments(QString *path, QDirPrivate::PathNormalizations flags)
Definition qdir.cpp:2416
static qsizetype findStartOfNonNormalizedPath(const QChar *in, qsizetype i, qsizetype n, QDirPrivate::PathNormalizations flags) noexcept
Definition qdir.cpp:2362
static bool checkDotOrDotDot(const QDirListing::DirEntry &dirEntry, QDir::Filters filters)
Definition qdir.cpp:381
Q_AUTOTEST_EXPORT bool qt_normalizePathSegments(QString *path, QDirPrivate::PathNormalizations flags)
Definition qdir.cpp:2416
bool qt_isPathNormalized(const QString &path, QDirPrivate::PathNormalizations flags) noexcept
Definition qdir.cpp:2387
Q_DECL_COLD_FUNCTION bool qCheckFileNameFail(const char *msg, const char *file, int line, const char *function)
Q_CORE_EXPORT bool qt_isCaseSensitive(const QFileSystemEntry &entry, QFileSystemMetaData &data)
bool qCheckFileName(const E &entry, const char *file, int line, const char *function)
QFileInfo item
Definition qdir.cpp:221
QString suffix_cache
Definition qdir.cpp:220
QDirSortItem(const QFileInfo &fi, QDir::SortFlags sort)
Definition qdir.cpp:209
QDirSortItem()=default
QString filename_cache
Definition qdir.cpp:219
friend size_t qHash(const QFileSystemNativeId &id, size_t seed=0) noexcept
friend bool operator==(const QFileSystemNativeId &lhs, const QFileSystemNativeId &rhs) noexcept
friend bool operator!=(const QFileSystemNativeId &lhs, const QFileSystemNativeId &rhs) noexcept
bool isValid() const noexcept