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
qurlquery.h
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// Copyright (C) 2016 Intel Corporation.
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:default
5
6#ifndef QURLQUERY_H
7#define QURLQUERY_H
8
9#include <QtCore/qcompare.h>
10#include <QtCore/qshareddata.h>
11#include <QtCore/qurl.h>
12
13#include <initializer_list>
14
16
17Q_CORE_EXPORT size_t qHash(const QUrlQuery &key, size_t seed = 0) noexcept;
18
20QT_DECLARE_QSDP_SPECIALIZATION_DTOR(QUrlQueryPrivate)
21
22class Q_CORE_EXPORT QUrlQuery
23{
24public:
25 QUrlQuery();
26 explicit QUrlQuery(const QUrl &url);
27 explicit QUrlQuery(const QString &queryString);
28 QUrlQuery(std::initializer_list<std::pair<QString, QString>> list)
29 : QUrlQuery()
30 {
31 for (const std::pair<QString, QString> &item : list)
32 addQueryItem(item.first, item.second);
33 }
34
35 QUrlQuery(const QUrlQuery &other);
36 QT_CORE_INLINE_SINCE(6, 12)
37 QUrlQuery(QUrlQuery &&other) noexcept;
38 QUrlQuery &operator=(const QUrlQuery &other);
39 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QUrlQuery)
40 ~QUrlQuery();
41
42#if QT_CORE_REMOVED_SINCE(6, 8)
43 bool operator==(const QUrlQuery &other) const;
44 bool operator!=(const QUrlQuery &other) const
45 { return !operator==(other); }
46#endif
47
48 void swap(QUrlQuery &other) noexcept { d.swap(other.d); }
49
50 bool isEmpty() const;
51 bool isDetached() const;
52 void clear();
53
54 QString query(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const;
55 void setQuery(const QString &queryString);
56 QString toString(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
57 { return query(encoding); }
58
59 void setQueryDelimiters(QChar valueDelimiter, QChar pairDelimiter);
60 QChar queryValueDelimiter() const;
61 QChar queryPairDelimiter() const;
62
63 void setQueryItems(const QList<std::pair<QString, QString> > &query);
64 QList<std::pair<QString, QString> > queryItems(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const;
65
66 bool hasQueryItem(const QString &key) const;
67 void addQueryItem(const QString &key, const QString &value);
68 void removeQueryItem(const QString &key);
69 QString queryItemValue(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const;
70 QStringList allQueryItemValues(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const;
71 void removeAllQueryItems(const QString &key);
72
73 static constexpr char16_t defaultQueryValueDelimiter() noexcept { return u'='; }
74 static constexpr char16_t defaultQueryPairDelimiter() noexcept { return u'&'; }
75
76private:
77 friend Q_CORE_EXPORT bool comparesEqual(const QUrlQuery &lhs, const QUrlQuery &rhs);
78 Q_DECLARE_EQUALITY_COMPARABLE_NON_NOEXCEPT(QUrlQuery)
79 friend class QUrl;
80 friend Q_CORE_EXPORT size_t qHash(const QUrlQuery &key, size_t seed) noexcept;
81 QSharedDataPointer<QUrlQueryPrivate> d;
82
83public:
84 typedef QSharedDataPointer<QUrlQueryPrivate> DataPtr;
85 inline DataPtr &data_ptr() { return d; }
86};
87
89
90#if QT_CORE_INLINE_IMPL_SINCE(6, 12)
91QUrlQuery::QUrlQuery(QUrlQuery &&other) noexcept = default;
92#endif
93
94QT_END_NAMESPACE
95
96#endif // QURLQUERY_H
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:177
bool isEmpty() const
Definition qurl.cpp:535
uint presentSections() const noexcept
Definition qurl.cpp:567
QAtomicInt ref
Definition qurl.cpp:616
void appendPassword(QString &appendTo, QUrl::FormattingOptions options) const
Definition qurl.cpp:982
bool hasScheme() const
Definition qurl.cpp:584
void appendHost(QString &appendTo, QUrl::FormattingOptions options) const
Definition qurl.cpp:1241
bool validateComponent(Section section, const QString &input, qsizetype begin, qsizetype end)
QString host
Definition qurl.cpp:622
uchar sectionIsPresent
Definition qurl.cpp:633
bool appendPath(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
Definition qurl.cpp:989
std::unique_ptr< Error > cloneError() const
Definition qurl.cpp:665
void setAuthority(const QString &auth, qsizetype from, qsizetype end, QUrl::ParsingMode mode)
Definition qurl.cpp:1093
bool hasPort() const
Definition qurl.cpp:590
QString toLocalFile(QUrl::FormattingOptions options) const
Definition qurl.cpp:1560
ErrorCode validityError(QString *source=nullptr, qsizetype *position=nullptr) const
Definition qurl.cpp:1635
bool hasQuery() const
Definition qurl.cpp:592
void setFragment(String &&value, QUrl::ParsingMode mode)
Definition qurl.cpp:1199
bool hasUserInfo() const
Definition qurl.cpp:586
QUrlPrivate(const QUrlPrivate &copy)
Definition qurl.cpp:647
QString mergePaths(const QString &relativePath) const
Definition qurl.cpp:1596
bool isLocalFile() const
Definition qurl.cpp:595
std::unique_ptr< Error > error
Definition qurl.cpp:627
@ AuthorityPresentAndPathIsRelative
Definition qurl.cpp:517
@ PortEmptyError
Definition qurl.cpp:507
@ RelativeUrlPathContainsColonBeforeSlash
Definition qurl.cpp:519
@ AuthorityAbsentAndPathIsDoubleSlash
Definition qurl.cpp:518
@ InvalidIPv6AddressError
Definition qurl.cpp:501
@ InvalidIPv4AddressError
Definition qurl.cpp:500
@ InvalidCharacterInIPv6Error
Definition qurl.cpp:502
@ InvalidPasswordError
Definition qurl.cpp:497
@ InvalidRegNameError
Definition qurl.cpp:499
@ InvalidFragmentError
Definition qurl.cpp:513
@ HostMissingEndBracket
Definition qurl.cpp:504
@ InvalidPortError
Definition qurl.cpp:506
@ InvalidQueryError
Definition qurl.cpp:511
@ InvalidPathError
Definition qurl.cpp:509
@ InvalidSchemeError
Definition qurl.cpp:493
@ InvalidUserNameError
Definition qurl.cpp:495
@ InvalidIPvFutureError
Definition qurl.cpp:503
QString path
Definition qurl.cpp:623
bool hasPath() const
Definition qurl.cpp:591
QUrlPrivate()
Definition qurl.cpp:640
void clearError()
Definition qurl.cpp:670
bool setScheme(const QString &value, qsizetype len, bool doSetError)
Definition qurl.cpp:1028
void appendAuthority(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
Definition qurl.cpp:914
uchar flags
Definition qurl.cpp:634
@ IsLocalFile
Definition qurl.cpp:487
QString scheme
Definition qurl.cpp:619
void appendUserName(QString &appendTo, QUrl::FormattingOptions options) const
Definition qurl.cpp:973
void clear()
Definition qurl.cpp:607
void appendUserInfo(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
Definition qurl.cpp:928
bool hasFragment() const
Definition qurl.cpp:593
bool validateComponent(Section section, const QString &input)
Definition qurl.cpp:543
bool normalizePathSegments(QString *path) const
Definition qurl.cpp:598
void setError(ErrorCode errorCode, const QString &source, qsizetype supplement=-1)
Definition qurl.cpp:675
bool hasUserName() const
Definition qurl.cpp:587
QString fragment
Definition qurl.cpp:625
void setUserInfo(String &&value, QUrl::ParsingMode mode)
Definition qurl.cpp:1165
QString query
Definition qurl.cpp:624
void setPath(String &&value, QUrl::ParsingMode mode)
Definition qurl.cpp:1193
void setQuery(String &&value, QUrl::ParsingMode mode)
Definition qurl.cpp:1205
QString userName
Definition qurl.cpp:620
bool hasAuthority() const
Definition qurl.cpp:585
bool hasHost() const
Definition qurl.cpp:589
void appendQuery(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
Definition qurl.cpp:1020
void setPassword(String &&value, QUrl::ParsingMode mode)
Definition qurl.cpp:1187
void setUserName(String &&value, QUrl::ParsingMode mode)
Definition qurl.cpp:1181
QString password
Definition qurl.cpp:621
void appendFragment(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
Definition qurl.cpp:1013
bool setHost(const QString &value, qsizetype from, qsizetype end, QUrl::ParsingMode mode)
Definition qurl.cpp:1358
bool hasPassword() const
Definition qurl.cpp:588
void parse(const QString &url, QUrl::ParsingMode parsingMode)
Definition qurl.cpp:1453
\inmodule QtCore
Definition qurlquery.h:23
QDataStream & operator>>(QDataStream &in, QUrl &url)
Reads a url into url from the stream in and returns a reference to the stream.
Definition qurl.cpp:3548
Combined button and popup list for selecting options.
#define QStringLiteral(str)
Definition qstring.h:1865
static const ushort userNameInAuthority[]
Definition qurl.cpp:827
size_t qHash(const QUrl &url, size_t seed) noexcept
\qhashold{QHash}
Definition qurl.cpp:3733
QDebug operator<<(QDebug d, const QUrl &url)
Definition qurl.cpp:3558
static QString fileScheme()
Definition qurl.cpp:453
static const QChar * parseIpFuture(QString &host, const QChar *begin, const QChar *end, QUrl::ParsingMode mode)
Definition qurl.cpp:1266
static const ushort *const passwordInAuthority
Definition qurl.cpp:846
static void appendComponentIfPresent(QString &msg, bool present, const char *componentName, const QString &component)
Definition qurl.cpp:3633
static const ushort userNameInUrl[]
Definition qurl.cpp:848
static QString webDavSslTag()
Definition qurl.cpp:463
static QString errorMessage(QUrlPrivate::ErrorCode errorCode, const QString &errorSource, qsizetype errorPosition)
Definition qurl.cpp:3566
static const ushort *const fragmentInIsolation
Definition qurl.cpp:804
static bool appendToUser(QString &appendTo, QStringView value, QUrl::FormattingOptions options, const ushort *actions)
Definition qurl.cpp:892
static bool isHex(char c)
Definition qurl.cpp:442
static void fixupNonAuthorityPath(QString *path)
Definition qurl.cpp:1621
static const QChar * parseIp6(QString &host, const QChar *begin, const QChar *end, QUrl::ParsingMode mode)
Definition qurl.cpp:1311
static const ushort *const pathInUrl
Definition qurl.cpp:861
static const ushort *const pathInIsolation
Definition qurl.cpp:802
static const ushort *const passwordInUserInfo
Definition qurl.cpp:825
static void recodeFromUser(QString &output, QStringView input, const ushort *actions, QUrl::ParsingMode mode)
Definition qurl.cpp:879
Qt::weak_ordering compareThreeWay(const QUrl &lhs, const QUrl &rhs)
Definition qurl.cpp:3092
static const ushort userNameInUserInfo[]
Definition qurl.cpp:806
static const ushort userNameInIsolation[]
Definition qurl.cpp:782
static const ushort *const queryInIsolation
Definition qurl.cpp:803
static QUrl adjustFtpPath(QUrl url)
Definition qurl.cpp:3760
static const ushort *const fragmentInUrl
Definition qurl.cpp:863
static QString ftpScheme()
Definition qurl.cpp:448
static bool isIp6(const QString &text)
Definition qurl.cpp:3770
static void recodeFromUser(QString &output, const QString &input, const ushort *actions, QUrl::ParsingMode mode)
Definition qurl.cpp:866
static const ushort *const passwordInUrl
Definition qurl.cpp:860
static const ushort *const queryInUrl
Definition qurl.cpp:862
static const ushort *const passwordInIsolation
Definition qurl.cpp:801
bool comparesEqual(const QUrl &lhs, const QUrl &rhs)
Definition qurl.cpp:3156
static QString webDavScheme()
Definition qurl.cpp:458
static QString fromNativeSeparators(const QString &pathName)
Definition qurl.cpp:3334
QT_BEGIN_NAMESPACE constexpr QUrl::ComponentFormattingOptions QUrlDecodeForLocalFile
Definition qurl_p.h:27
AceLeadingDot
Definition qurl_p.h:38
@ AllowLeadingDot
Definition qurl_p.h:38
@ ForbidLeadingDot
Definition qurl_p.h:38
qsizetype qt_encodeFromUser(QString &appendTo, const QString &input, const ushort *tableModifications)
AceOperation
Definition qurl_p.h:39
@ ToAceOnly
Definition qurl_p.h:39
@ NormalizeAce
Definition qurl_p.h:39
Q_AUTOTEST_EXPORT void qt_punycodeEncoder(QStringView in, QString *output)
Definition qurlidna.cpp:68
qsizetype position
Definition qurl.cpp:526
ErrorCode code
Definition qurl.cpp:527