9#include <QtCore/qcompare.h>
10#include <QtCore/qshareddata.h>
11#include <QtCore/qurl.h>
13#include <initializer_list>
17Q_CORE_EXPORT size_t qHash(
const QUrlQuery &key, size_t seed = 0)
noexcept;
24 explicit QUrlQuery(
const QUrl &url);
25 explicit QUrlQuery(
const QString &queryString);
26 QUrlQuery(std::initializer_list<std::pair<QString, QString>> list)
29 for (
const std::pair<QString, QString> &item : list)
30 addQueryItem(item.first, item.second);
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)
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); }
45 void swap(QUrlQuery &other)
noexcept { d.swap(other.d); }
48 bool isDetached()
const;
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); }
56 void setQueryDelimiters(QChar valueDelimiter, QChar pairDelimiter);
57 QChar queryValueDelimiter()
const;
58 QChar queryPairDelimiter()
const;
60 void setQueryItems(
const QList<std::pair<QString, QString> > &query);
61 QList<std::pair<QString, QString> > queryItems(QUrl::ComponentFormattingOptions encoding = QUrl::PrettyDecoded)
const;
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);
70 static constexpr char16_t defaultQueryValueDelimiter()
noexcept {
return u'='; }
71 static constexpr char16_t defaultQueryPairDelimiter()
noexcept {
return u'&'; }
74 friend Q_CORE_EXPORT
bool comparesEqual(
const QUrlQuery &lhs,
const QUrlQuery &rhs);
75 Q_DECLARE_EQUALITY_COMPARABLE_NON_NOEXCEPT(QUrlQuery)
77 friend Q_CORE_EXPORT size_t qHash(
const QUrlQuery &key, size_t seed)
noexcept;
78 QSharedDataPointer<QUrlQueryPrivate> d;
81 typedef QSharedDataPointer<QUrlQueryPrivate> DataPtr;
82 inline DataPtr &data_ptr() {
return d; }
uint presentSections() const noexcept
void appendPassword(QString &appendTo, QUrl::FormattingOptions options) const
void appendHost(QString &appendTo, QUrl::FormattingOptions options) const
bool validateComponent(Section section, const QString &input, qsizetype begin, qsizetype end)
std::unique_ptr< Error > cloneError() const
void setAuthority(const QString &auth, qsizetype from, qsizetype end, QUrl::ParsingMode mode)
QString toLocalFile(QUrl::FormattingOptions options) const
ErrorCode validityError(QString *source=nullptr, qsizetype *position=nullptr) const
void setFragment(String &&value, QUrl::ParsingMode mode)
QUrlPrivate(const QUrlPrivate ©)
QString mergePaths(const QString &relativePath) const
std::unique_ptr< Error > error
@ AuthorityPresentAndPathIsRelative
@ RelativeUrlPathContainsColonBeforeSlash
@ AuthorityAbsentAndPathIsDoubleSlash
@ InvalidIPv6AddressError
@ InvalidIPv4AddressError
@ InvalidCharacterInIPv6Error
bool setScheme(const QString &value, qsizetype len, bool doSetError)
void appendAuthority(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
void appendUserName(QString &appendTo, QUrl::FormattingOptions options) const
void appendUserInfo(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
void appendPath(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
bool validateComponent(Section section, const QString &input)
bool normalizePathSegments(QString *path) const
void setError(ErrorCode errorCode, const QString &source, qsizetype supplement=-1)
void setUserInfo(String &&value, QUrl::ParsingMode mode)
void setPath(String &&value, QUrl::ParsingMode mode)
void setQuery(String &&value, QUrl::ParsingMode mode)
bool hasAuthority() const
void appendQuery(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
void setPassword(String &&value, QUrl::ParsingMode mode)
void setUserName(String &&value, QUrl::ParsingMode mode)
void appendFragment(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
bool setHost(const QString &value, qsizetype from, qsizetype end, QUrl::ParsingMode mode)
void parse(const QString &url, QUrl::ParsingMode parsingMode)
QDataStream & operator>>(QDataStream &in, QUrl &url)
Reads a url into url from the stream in and returns a reference to the stream.
#define QStringLiteral(str)
static const ushort userNameInAuthority[]
size_t qHash(const QUrl &url, size_t seed) noexcept
\qhashold{QHash}
QDebug operator<<(QDebug d, const QUrl &url)
static QString fileScheme()
static const QChar * parseIpFuture(QString &host, const QChar *begin, const QChar *end, QUrl::ParsingMode mode)
static const ushort *const passwordInAuthority
static void appendComponentIfPresent(QString &msg, bool present, const char *componentName, const QString &component)
static const ushort userNameInUrl[]
static QString webDavSslTag()
static QString errorMessage(QUrlPrivate::ErrorCode errorCode, const QString &errorSource, qsizetype errorPosition)
static const ushort *const fragmentInIsolation
static void appendToUser(QString &appendTo, QStringView value, QUrl::FormattingOptions options, const ushort *actions)
static bool isHex(char c)
static void fixupNonAuthorityPath(QString *path)
static const QChar * parseIp6(QString &host, const QChar *begin, const QChar *end, QUrl::ParsingMode mode)
static const ushort *const pathInUrl
static const ushort *const pathInIsolation
static const ushort *const passwordInUserInfo
static void recodeFromUser(QString &output, QStringView input, const ushort *actions, QUrl::ParsingMode mode)
Qt::weak_ordering compareThreeWay(const QUrl &lhs, const QUrl &rhs)
static const ushort userNameInUserInfo[]
static const ushort userNameInIsolation[]
static const ushort *const queryInIsolation
static QUrl adjustFtpPath(QUrl url)
static const ushort *const fragmentInUrl
static QString ftpScheme()
static bool isIp6(const QString &text)
static void recodeFromUser(QString &output, const QString &input, const ushort *actions, QUrl::ParsingMode mode)
static const ushort *const passwordInUrl
static const ushort *const queryInUrl
static const ushort *const passwordInIsolation
bool comparesEqual(const QUrl &lhs, const QUrl &rhs)
static QString webDavScheme()
static QString fromNativeSeparators(const QString &pathName)
qsizetype qt_encodeFromUser(QString &appendTo, const QString &input, const ushort *tableModifications)
Q_AUTOTEST_EXPORT void qt_punycodeEncoder(QStringView in, QString *output)