123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | // Copyright (C) 2020 The Qt Company Ltd.// Copyright (C) 2013 Aleix Pol Gonzalez <aleixpol@kde.org>// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#ifndef QCOLLATOR_H#define QCOLLATOR_H#include <QtCore/qstring.h>#include <QtCore/qstringlist.h>#include <QtCore/qlocale.h> QT_BEGIN_NAMESPACE class QCollatorPrivate;class QCollatorSortKeyPrivate;QT_DECLARE_QESDP_SPECIALIZATION_DTOR(QCollatorSortKeyPrivate)class Q_CORE_EXPORT QCollatorSortKey {friend class QCollator;public:QCollatorSortKey(const QCollatorSortKey &other);QCollatorSortKey(QCollatorSortKey &&other) noexcept =default;~QCollatorSortKey(); QCollatorSortKey &operator=(const QCollatorSortKey &other);QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QCollatorSortKey)voidswap(QCollatorSortKey &other) noexcept { d.swap(other.d); }intcompare(const QCollatorSortKey &key)const;friendbooloperator<(const QCollatorSortKey &lhs,const QCollatorSortKey &rhs){return lhs.compare(rhs) <0; }protected:QCollatorSortKey(QCollatorSortKeyPrivate*); QExplicitlySharedDataPointer<QCollatorSortKeyPrivate> d;private:QCollatorSortKey();};class Q_CORE_EXPORT QCollator {public:QCollator();explicitQCollator(const QLocale &locale);QCollator(const QCollator &);~QCollator(); QCollator &operator=(const QCollator &);QCollator(QCollator &&other) noexcept :d(other.d) { other.d =nullptr; }QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QCollator)voidswap(QCollator &other) noexcept {qt_ptr_swap(d, other.d); }voidsetLocale(const QLocale &locale); QLocale locale()const;Qt::CaseSensitivity caseSensitivity()const;voidsetCaseSensitivity(Qt::CaseSensitivity cs);voidsetNumericMode(bool on);boolnumericMode()const;voidsetIgnorePunctuation(bool on);boolignorePunctuation()const;intcompare(const QString &s1,const QString &s2)const{returncompare(QStringView(s1),QStringView(s2)); }#if QT_CORE_REMOVED_SINCE(6, 4) && QT_POINTER_SIZE != 4intcompare(const QChar *s1,int len1,const QChar *s2,int len2)const{returncompare(QStringView(s1, len1),QStringView(s2, len2)); }#endifintcompare(const QChar *s1, qsizetype len1,const QChar *s2, qsizetype len2)const{returncompare(QStringView(s1, len1),QStringView(s2, len2)); }booloperator()(const QString &s1,const QString &s2)const{returncompare(s1, s2) <0; }intcompare(QStringView s1, QStringView s2)const;booloperator()(QStringView s1, QStringView s2)const{returncompare(s1, s2) <0; } QCollatorSortKey sortKey(const QString &string)const;static intdefaultCompare(QStringView s1, QStringView s2);static QCollatorSortKey defaultSortKey(QStringView key);private: QCollatorPrivate *d;voiddetach();};Q_DECLARE_SHARED(QCollatorSortKey)Q_DECLARE_SHARED(QCollator) QT_END_NAMESPACE #endif// QCOLLATOR_P_H
|