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
20class Q_CORE_EXPORT QUrlQuery
21{
22public:
23 QUrlQuery();
24 explicit QUrlQuery(const QUrl &url);
25 explicit QUrlQuery(const QString &queryString);
26 QUrlQuery(std::initializer_list<std::pair<QString, QString>> list)
27 : QUrlQuery()
28 {
29 for (const std::pair<QString, QString> &item : list)
30 addQueryItem(item.first, item.second);
31 }
32
33 QUrlQuery(const QUrlQuery &other);
34 QUrlQuery(QUrlQuery &&other) noexcept;
35 QUrlQuery &operator=(const QUrlQuery &other);
36 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QUrlQuery)
37 ~QUrlQuery();
38
39#if QT_CORE_REMOVED_SINCE(6, 8)
40 bool operator==(const QUrlQuery &other) const;
41 bool operator!=(const QUrlQuery &other) const
42 { return !operator==(other); }
43#endif
44
45 void swap(QUrlQuery &other) noexcept { d.swap(other.d); }
46
47 bool isEmpty() const;
48 bool isDetached() const;
49 void clear();
50
51 QString query(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const;
52 void setQuery(const QString &queryString);
53 QString toString(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const
54 { return query(encoding); }
55
56 void setQueryDelimiters(QChar valueDelimiter, QChar pairDelimiter);
57 QChar queryValueDelimiter() const;
58 QChar queryPairDelimiter() const;
59
60 void setQueryItems(const QList<std::pair<QString, QString> > &query);
61 QList<std::pair<QString, QString> > queryItems(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const;
62
63 bool hasQueryItem(const QString &key) const;
64 void addQueryItem(const QString &key, const QString &value);
65 void removeQueryItem(const QString &key);
66 QString queryItemValue(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const;
67 QStringList allQueryItemValues(const QString &key, QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded) const;
68 void removeAllQueryItems(const QString &key);
69
70 static constexpr char16_t defaultQueryValueDelimiter() noexcept { return u'='; }
71 static constexpr char16_t defaultQueryPairDelimiter() noexcept { return u'&'; }
72
73private:
74 friend Q_CORE_EXPORT bool comparesEqual(const QUrlQuery &lhs, const QUrlQuery &rhs);
75 Q_DECLARE_EQUALITY_COMPARABLE_NON_NOEXCEPT(QUrlQuery)
76 friend class QUrl;
77 friend Q_CORE_EXPORT size_t qHash(const QUrlQuery &key, size_t seed) noexcept;
78 QSharedDataPointer<QUrlQueryPrivate> d;
79
80public:
81 typedef QSharedDataPointer<QUrlQueryPrivate> DataPtr;
82 inline DataPtr &data_ptr() { return d; }
83};
84
86
87QT_END_NAMESPACE
88
89#endif // QURLQUERY_H
bool isEmpty() const
Definition qurl.cpp:508
uint presentSections() const noexcept
Definition qurl.cpp:540
QAtomicInt ref
Definition qurl.cpp:589
void appendPassword(QString &appendTo, QUrl::FormattingOptions options) const
Definition qurl.cpp:948
bool hasScheme() const
Definition qurl.cpp:557
void appendHost(QString &appendTo, QUrl::FormattingOptions options) const
Definition qurl.cpp:1206
bool validateComponent(Section section, const QString &input, qsizetype begin, qsizetype end)
QString host
Definition qurl.cpp:595
uchar sectionIsPresent
Definition qurl.cpp:606
std::unique_ptr< Error > cloneError() const
Definition qurl.cpp:638
void setAuthority(const QString &auth, qsizetype from, qsizetype end, QUrl::ParsingMode mode)
Definition qurl.cpp:1058
bool hasPort() const
Definition qurl.cpp:563
QString toLocalFile(QUrl::FormattingOptions options) const
Definition qurl.cpp:1525
ErrorCode validityError(QString *source=nullptr, qsizetype *position=nullptr) const
Definition qurl.cpp:1599
bool hasQuery() const
Definition qurl.cpp:565
void setFragment(String &&value, QUrl::ParsingMode mode)
Definition qurl.cpp:1164
bool hasUserInfo() const
Definition qurl.cpp:559
QUrlPrivate(const QUrlPrivate &copy)
Definition qurl.cpp:620
QString mergePaths(const QString &relativePath) const
Definition qurl.cpp:1560
bool isLocalFile() const
Definition qurl.cpp:568
std::unique_ptr< Error > error
Definition qurl.cpp:600
@ AuthorityPresentAndPathIsRelative
Definition qurl.cpp:490
@ PortEmptyError
Definition qurl.cpp:480
@ RelativeUrlPathContainsColonBeforeSlash
Definition qurl.cpp:492
@ AuthorityAbsentAndPathIsDoubleSlash
Definition qurl.cpp:491
@ InvalidIPv6AddressError
Definition qurl.cpp:474
@ InvalidIPv4AddressError
Definition qurl.cpp:473
@ InvalidCharacterInIPv6Error
Definition qurl.cpp:475
@ InvalidPasswordError
Definition qurl.cpp:470
@ InvalidRegNameError
Definition qurl.cpp:472
@ InvalidFragmentError
Definition qurl.cpp:486
@ HostMissingEndBracket
Definition qurl.cpp:477
@ InvalidPortError
Definition qurl.cpp:479
@ InvalidQueryError
Definition qurl.cpp:484
@ InvalidPathError
Definition qurl.cpp:482
@ InvalidSchemeError
Definition qurl.cpp:466
@ InvalidUserNameError
Definition qurl.cpp:468
@ InvalidIPvFutureError
Definition qurl.cpp:476
QString path
Definition qurl.cpp:596
bool hasPath() const
Definition qurl.cpp:564
QUrlPrivate()
Definition qurl.cpp:613
void clearError()
Definition qurl.cpp:643
bool setScheme(const QString &value, qsizetype len, bool doSetError)
Definition qurl.cpp:993
void appendAuthority(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
Definition qurl.cpp:880
uchar flags
Definition qurl.cpp:607
@ IsLocalFile
Definition qurl.cpp:460
QString scheme
Definition qurl.cpp:592
void appendUserName(QString &appendTo, QUrl::FormattingOptions options) const
Definition qurl.cpp:939
void clear()
Definition qurl.cpp:580
void appendUserInfo(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
Definition qurl.cpp:894
bool hasFragment() const
Definition qurl.cpp:566
void appendPath(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
Definition qurl.cpp:955
bool validateComponent(Section section, const QString &input)
Definition qurl.cpp:516
bool normalizePathSegments(QString *path) const
Definition qurl.cpp:571
void setError(ErrorCode errorCode, const QString &source, qsizetype supplement=-1)
Definition qurl.cpp:648
bool hasUserName() const
Definition qurl.cpp:560
QString fragment
Definition qurl.cpp:598
void setUserInfo(String &&value, QUrl::ParsingMode mode)
Definition qurl.cpp:1130
QString query
Definition qurl.cpp:597
void setPath(String &&value, QUrl::ParsingMode mode)
Definition qurl.cpp:1158
void setQuery(String &&value, QUrl::ParsingMode mode)
Definition qurl.cpp:1170
QString userName
Definition qurl.cpp:593
bool hasAuthority() const
Definition qurl.cpp:558
bool hasHost() const
Definition qurl.cpp:562
void appendQuery(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
Definition qurl.cpp:985
void setPassword(String &&value, QUrl::ParsingMode mode)
Definition qurl.cpp:1152
void setUserName(String &&value, QUrl::ParsingMode mode)
Definition qurl.cpp:1146
QString password
Definition qurl.cpp:594
void appendFragment(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
Definition qurl.cpp:978
bool setHost(const QString &value, qsizetype from, qsizetype end, QUrl::ParsingMode mode)
Definition qurl.cpp:1323
bool hasPassword() const
Definition qurl.cpp:561
void parse(const QString &url, QUrl::ParsingMode parsingMode)
Definition qurl.cpp:1418
\inmodule QtCore
Definition qurlquery.h:21
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:3479
#define QStringLiteral(str)
Definition qstring.h:1826
static const ushort userNameInAuthority[]
Definition qurl.cpp:800
size_t qHash(const QUrl &url, size_t seed) noexcept
\qhashold{QHash}
Definition qurl.cpp:3664
QDebug operator<<(QDebug d, const QUrl &url)
Definition qurl.cpp:3489
static QString fileScheme()
Definition qurl.cpp:426
static const QChar * parseIpFuture(QString &host, const QChar *begin, const QChar *end, QUrl::ParsingMode mode)
Definition qurl.cpp:1231
static const ushort *const passwordInAuthority
Definition qurl.cpp:819
static void appendComponentIfPresent(QString &msg, bool present, const char *componentName, const QString &component)
Definition qurl.cpp:3564
static const ushort userNameInUrl[]
Definition qurl.cpp:821
static QString webDavSslTag()
Definition qurl.cpp:436
static QString errorMessage(QUrlPrivate::ErrorCode errorCode, const QString &errorSource, qsizetype errorPosition)
Definition qurl.cpp:3497
static const ushort *const fragmentInIsolation
Definition qurl.cpp:777
static void appendToUser(QString &appendTo, QStringView value, QUrl::FormattingOptions options, const ushort *actions)
Definition qurl.cpp:865
static bool isHex(char c)
Definition qurl.cpp:415
static void fixupNonAuthorityPath(QString *path)
Definition qurl.cpp:1585
static const QChar * parseIp6(QString &host, const QChar *begin, const QChar *end, QUrl::ParsingMode mode)
Definition qurl.cpp:1276
static const ushort *const pathInUrl
Definition qurl.cpp:834
static const ushort *const pathInIsolation
Definition qurl.cpp:775
static const ushort *const passwordInUserInfo
Definition qurl.cpp:798
static void recodeFromUser(QString &output, QStringView input, const ushort *actions, QUrl::ParsingMode mode)
Definition qurl.cpp:852
Qt::weak_ordering compareThreeWay(const QUrl &lhs, const QUrl &rhs)
Definition qurl.cpp:3052
static const ushort userNameInUserInfo[]
Definition qurl.cpp:779
static const ushort userNameInIsolation[]
Definition qurl.cpp:755
static const ushort *const queryInIsolation
Definition qurl.cpp:776
static QUrl adjustFtpPath(QUrl url)
Definition qurl.cpp:3691
static const ushort *const fragmentInUrl
Definition qurl.cpp:836
static QString ftpScheme()
Definition qurl.cpp:421
static bool isIp6(const QString &text)
Definition qurl.cpp:3701
static void recodeFromUser(QString &output, const QString &input, const ushort *actions, QUrl::ParsingMode mode)
Definition qurl.cpp:839
static const ushort *const passwordInUrl
Definition qurl.cpp:833
static const ushort *const queryInUrl
Definition qurl.cpp:835
static const ushort *const passwordInIsolation
Definition qurl.cpp:774
bool comparesEqual(const QUrl &lhs, const QUrl &rhs)
Definition qurl.cpp:3116
static QString webDavScheme()
Definition qurl.cpp:431
static QString fromNativeSeparators(const QString &pathName)
Definition qurl.cpp:3288
AceLeadingDot
Definition qurl_p.h:33
@ AllowLeadingDot
Definition qurl_p.h:33
@ ForbidLeadingDot
Definition qurl_p.h:33
qsizetype qt_encodeFromUser(QString &appendTo, const QString &input, const ushort *tableModifications)
AceOperation
Definition qurl_p.h:34
@ ToAceOnly
Definition qurl_p.h:34
@ NormalizeAce
Definition qurl_p.h:34
Q_AUTOTEST_EXPORT void qt_punycodeEncoder(QStringView in, QString *output)
Definition qurlidna.cpp:68
qsizetype position
Definition qurl.cpp:499
ErrorCode code
Definition qurl.cpp:500