430 #include "qplatformdefs.h"
436 #include "private/qipaddress_p.h"
438 #include "private/qdir_p.h"
445 inline static bool isHex(
char c)
448 return (
c >=
'0' &&
c <=
'9') || (
c >=
'a' &&
c <=
'f');
451 static inline QString ftpScheme()
456 static inline QString fileScheme()
461 static inline QString webDavScheme()
466 static inline QString webDavSslTag()
620 userName(copy.userName),
625 fragment(copy.fragment),
626 error(copy.cloneError()),
627 sectionIsPresent(copy.sectionIsPresent),
637 return error ? std::make_unique<Error>(*
error) :
nullptr;
651 error = std::make_unique<Error>();
652 error->code = errorCode;
751 static const ushort userNameInIsolation[] = {
770 static const ushort *
const passwordInIsolation = userNameInIsolation + 1;
771 static const ushort *
const pathInIsolation = userNameInIsolation + 5;
772 static const ushort *
const queryInIsolation = userNameInIsolation + 6;
773 static const ushort *
const fragmentInIsolation = userNameInIsolation + 7;
775 static const ushort userNameInUserInfo[] = {
794 static const ushort *
const passwordInUserInfo = userNameInUserInfo + 1;
796 static const ushort userNameInAuthority[] = {
815 static const ushort *
const passwordInAuthority = userNameInAuthority + 1;
817 static const ushort userNameInUrl[] = {
829 static const ushort *
const passwordInUrl = userNameInUrl + 1;
830 static const ushort *
const pathInUrl = userNameInUrl + 5;
831 static const ushort *
const queryInUrl = userNameInUrl + 6;
832 static const ushort *
const fragmentInUrl = userNameInUrl + 6;
834 static inline void parseDecodedComponent(
QString &
data)
885 const ushort *userNameActions;
886 const ushort *passwordActions;
888 userNameActions = userNameInUrl;
889 passwordActions = passwordInUrl;
891 switch (appendingTo) {
893 userNameActions = userNameInUserInfo;
894 passwordActions = passwordInUserInfo;
898 userNameActions = userNameInAuthority;
899 passwordActions = passwordInAuthority;
903 userNameActions = userNameInUrl;
904 passwordActions = passwordInUrl;
928 appendToUser(appendTo,
userName, options,
935 appendToUser(appendTo,
password, options,
959 appendToUser(appendTo, thePathView, options,
965 appendToUser(appendTo,
fragment, options,
967 appendingTo ==
FullUrl ?
nullptr : fragmentInIsolation);
972 appendToUser(appendTo,
query, options,
994 int needsLowercasing = -1;
996 for (
int i = 0;
i <
len; ++
i) {
997 if (
p[
i] >=
'a' &&
p[
i] <=
'z')
999 if (
p[
i] >=
'A' &&
p[
i] <=
'Z') {
1000 needsLowercasing =
i;
1004 if (
p[
i] >=
'0' &&
p[
i] <=
'9')
1006 if (
p[
i] ==
'+' ||
p[
i] ==
'-' ||
p[
i] ==
'.')
1020 if (needsLowercasing != -1) {
1023 for (
int i = needsLowercasing;
i >= 0; --
i) {
1025 if (
c >=
'A' &&
c <=
'Z')
1026 schemeData[
i] =
QChar(
c + 0x20);
1031 if (
scheme == fileScheme()
1033 ||
scheme == webDavScheme()
1050 while (from !=
end) {
1056 from = userInfoIndex + 1;
1060 if (colonIndex < from)
1067 if (
uint(closingBracket) >
uint(colonIndex))
1074 unsigned long x = 0;
1075 for (
int i = colonIndex + 1;
i <
end; ++
i) {
1077 if (
c >=
'0' &&
c <=
'9') {
1140 path = recodeFromUser(
value, pathInIsolation, from,
end);
1152 query = recodeFromUser(
value, queryInIsolation, from, iend);
1210 static const char acceptable[] =
1217 if (
begin[3].unicode() !=
'.')
1219 if ((
begin[2].unicode() >=
'A' &&
begin[2].unicode() <=
'F') ||
1220 (
begin[2].unicode() >=
'a' &&
begin[2].unicode() <=
'f') ||
1221 (
begin[2].unicode() >=
'0' &&
begin[2].unicode() <=
'9')) {
1227 if (
begin[2].unicode() >=
'a')
1240 if (
begin->unicode() >=
'A' &&
begin->unicode() <=
'Z')
1242 else if (
begin->unicode() >=
'a' &&
begin->unicode() <=
'z')
1244 else if (
begin->unicode() >=
'0' &&
begin->unicode() <=
'9')
1246 else if (
begin->unicode() < 0x80 && strchr(acceptable,
begin->unicode()) !=
nullptr)
1254 return &origBegin[2];
1265 if (
qt_urlRecode(decodedBuffer, decoded, QUrl::ComponentFormattingOption::PrettyDecoded, decodeColon))
1266 decoded = decodedBuffer;
1273 int zoneIdPosition = decoded.
indexOf(zoneIdIdentifier);
1274 if ((zoneIdPosition != -1) && (decoded.
lastIndexOf(zoneIdIdentifier) == zoneIdPosition)) {
1275 zoneId = decoded.
mid(zoneIdPosition + zoneIdIdentifier.size());
1297 host += zoneIdIdentifier;
1315 if (
begin[0].unicode() ==
'[') {
1319 if (
end[-1].unicode() !=
']') {
1324 if (
len > 5 &&
begin[1].unicode() ==
'v') {
1329 }
else if (
begin[1].unicode() ==
'v') {
1413 const int len =
url.length();
1417 for (
int i = 0;
i <
len; ++
i) {
1419 if (uc ==
'#' &&
hash == -1) {
1426 if (question == -1) {
1427 if (uc ==
':' && colon == -1)
1437 hierStart = colon + 1;
1446 int hierEnd = qMin<uint>(qMin<uint>(question,
hash),
len);
1447 if (hierEnd - hierStart >= 2 &&
data[hierStart] ==
'/' &&
data[hierStart + 1] ==
'/') {
1449 int authorityEnd = hierEnd;
1450 for (
int i = hierStart + 2;
i < authorityEnd ; ++
i) {
1451 if (
data[
i] ==
'/') {
1460 pathStart = authorityEnd;
1467 pathStart = hierStart;
1469 if (hierStart < hierEnd)
1508 if (
scheme == webDavScheme())
1509 tmp += webDavSslTag();
1548 newPath = relativePath;
1573 if (
path->size() == 1 &&
in[0].unicode() ==
'.')
1575 else if (
path->size() == 2 &&
in[0].unicode() ==
'.' &&
in[1].unicode() ==
'.')
1582 if (
path->size() >= 2 &&
in[0].unicode() ==
'.' &&
in[1].unicode() ==
'/')
1584 else if (
path->size() >= 3 &&
in[0].unicode() ==
'.'
1585 &&
in[1].unicode() ==
'.' &&
in[2].unicode() ==
'/')
1591 if (
in <=
end - 3 &&
in[0].unicode() ==
'/' &&
in[1].unicode() ==
'.'
1592 &&
in[2].unicode() ==
'/') {
1595 }
else if (
in ==
end - 2 &&
in[0].unicode() ==
'/' &&
in[1].unicode() ==
'.') {
1606 if (
in <=
end - 4 &&
in[0].unicode() ==
'/' &&
in[1].unicode() ==
'.'
1607 &&
in[2].unicode() ==
'.' &&
in[3].unicode() ==
'/') {
1608 while (
out >
path->constData() && (--
out)->unicode() !=
'/')
1610 if (
out ==
path->constData() &&
out->unicode() !=
'/')
1614 }
else if (
in ==
end - 3 &&
in[0].unicode() ==
'/' &&
in[1].unicode() ==
'.'
1615 &&
in[2].unicode() ==
'.') {
1616 while (
out >
path->constData() && (--
out)->unicode() !=
'/')
1618 if (
out->unicode() ==
'/')
1684 for (
int i = 0;
i <
path.length(); ++
i) {
1718 static const char forbidden[] =
"\"<>\\^`{|}\x7F";
1719 static const char forbiddenUserInfo[] =
":/?#[]@";
1731 || uc <= 0x20 || strchr(forbidden, uc)) {
1735 if (section ==
UserInfo && strchr(forbiddenUserInfo + 1, uc))
1737 else if (section !=
UserInfo && strchr(forbiddenUserInfo, uc))
1749 if (
data[
j] ==
':') {
1764 inline void QUrlPrivate::validate()
const
1767 that->encodedOriginal = that->toEncoded();
1770 QURL_SETFLAG(that->stateFlags, Validated);
1783 that->isValid =
false;
1784 that->errorInfo.setParams(0, QT_TRANSLATE_NOOP(
QUrl,
"expected empty host, username,"
1785 "port and password"),
1788 }
else if (
scheme == ftpScheme() ||
scheme == httpScheme()) {
1790 that->isValid =
false;
1791 that->errorInfo.setParams(0, QT_TRANSLATE_NOOP(
QUrl,
"the host is empty, but not the path"),
1913 if (!d)
return true;
1952 qWarning(
"QUrl: QUrl::DecodedMode is not permitted when parsing a full URL");
2048 qWarning(
"QUrl::setAuthority(): QUrl::DecodedMode is not permitted in this function");
2082 qWarning(
"QUrl::authority(): QUrl::FullyDecoded is not permitted in this function");
2119 qWarning(
"QUrl::setUserInfo(): QUrl::DecodedMode is not permitted in this function");
2156 qWarning(
"QUrl::userInfo(): QUrl::FullyDecoded is not permitted in this function");
2191 parseDecodedComponent(
data);
2254 parseDecodedComponent(
data);
2316 parseDecodedComponent(
data);
2405 if (!d)
return defaultPort;
2406 return d->
port == -1 ? defaultPort : d->
port;
2441 parseDecodedComponent(
data);
2523 return ourPath.
mid(slash + 1);
2535 if (!d)
return false;
2577 parseDecodedComponent(
data);
2606 if (
query.isEmpty())
2675 parseDecodedComponent(
data);
2722 if (!d)
return false;
2747 if (!d)
return relative;
2748 if (!relative.d)
return *
this;
2764 t.d->host = d->
host;
2765 t.d->port = d->
port;
2769 t.d->path = d->
path;
2771 t.d->query = relative.d->
query;
2782 t.d->query = relative.d->
query;
2800 removeDotsFromPath(&
t.d->path);
2802 #if defined(QURL_DEBUG)
2803 qDebug(
"QUrl(\"%ls\").resolved(\"%ls\") = \"%ls\"",
2804 qUtf16Printable(
url()),
2805 qUtf16Printable(relative.
url()),
2806 qUtf16Printable(
t.url()));
2822 if (!d)
return true;
2859 qWarning(
"QUrl: QUrl::FullyDecoded is not permitted when reconstructing the full URL");
3095 bool thisIsEmpty = !d || d->
isEmpty();
3096 bool thatIsEmpty = !
url.d ||
url.d->isEmpty();
3099 return thisIsEmpty && !thatIsEmpty;
3127 return url.d->hasQuery();
3134 return url.d->hasFragment();
3151 return url.d->isEmpty();
3188 return url.d->isEmpty();
3217 else if (d->
port !=
url.d->port)
3222 else if (d->
host !=
url.d->host)
3246 return path1 == path2;
3257 return !(*
this ==
url);
3324 #if defined(Q_OS_WIN)
3326 const QChar nativeSeparator =
u'\\';
3327 auto i =
result.indexOf(nativeSeparator);
3332 if (
data[
i] == nativeSeparator)
3379 QString deslashified = fromNativeSeparators(localFile);
3402 }
else if (indexOfPath > 2) {
3403 deslashified = deslashified.
right(deslashified.
length() - indexOfPath);
3405 deslashified.
clear();
3480 #ifndef QT_NO_DATASTREAM
3513 #ifndef QT_NO_DEBUG_STREAM
3527 switch (errorCode) {
3530 "Impossible: QUrl::errorString should have treated this condition");
3540 return QLatin1String(
"Invalid user name (character '%1' not permitted)")
3544 return QLatin1String(
"Invalid password (character '%1' not permitted)")
3548 if (errorPosition != -1)
3549 return QLatin1String(
"Invalid hostname (character '%1' not permitted)")
3552 return QStringLiteral(
"Invalid hostname (contains invalid characters)");
3558 return QLatin1String(
"Invalid IPv6 address (character '%1' not permitted)").
arg(
c);
3560 return QLatin1String(
"Invalid IPvFuture address (character '%1' not permitted)").
arg(
c);
3565 return QStringLiteral(
"Invalid port or port number out of range");
3570 return QLatin1String(
"Invalid path (character '%1' not permitted)")
3574 return QLatin1String(
"Invalid query (character '%1' not permitted)")
3578 return QLatin1String(
"Invalid fragment (character '%1' not permitted)")
3582 return QStringLiteral(
"Path component is relative and authority is present");
3584 return QStringLiteral(
"Path component starts with '//' and authority is absent");
3586 return QStringLiteral(
"Relative URL's path component contains ':' before any '/'");
3589 Q_ASSERT_X(
false,
"QUrl::errorString",
"Cannot happen, unknown error");
3594 static inline void appendComponentIfPresent(
QString &
msg,
bool present,
const char *componentName,
3625 int errorPosition = 0;
3630 msg += errorMessage(errorCode, errorSource, errorPosition);
3635 " scheme = ", d->
scheme);
3639 " host = ", d->
host);
3640 appendComponentIfPresent(
msg, d->
port != -1,
3643 " path = ", d->
path);
3645 " query = ", d->
query);
3661 lst.reserve(urls.
size());
3663 lst.append(
url.toString(options));
3703 return qHash(-1, seed);
3772 UserInputResolutionOptions options)
3781 if (isIp6(trimmedString)) {
3783 url.setHost(trimmedString);
3791 if (!workingDirectory.
isEmpty()) {
3792 const QFileInfo fileInfo(
QDir(workingDirectory), userInput);
3812 && urlPrepended.
port() == -1)
3813 return adjustFtpPath(
url);
3821 return adjustFtpPath(urlPrepended);
small capitals from c petite p scientific f u
small capitals from c petite p scientific i
[1]
const char const char FT_Int * supplement
The QAtomicInt class provides platform-independent atomic operations on int.
T loadRelaxed() const noexcept
The QByteArray class provides an array of bytes.
qsizetype size() const noexcept
static QByteArray fromPercentEncoding(const QByteArray &pctEncoded, char percent='%')
QByteArray toPercentEncoding(const QByteArray &exclude=QByteArray(), const QByteArray &include=QByteArray(), char percent='%') const
constexpr qsizetype length() const noexcept
The QChar class provides a 16-bit Unicode character.
constexpr char16_t unicode() const noexcept
The QDataStream class provides serialization of binary data to a QIODevice.
operator<<(QDataStream &ds, qfloat16 f)
The QDebug class provides an output stream for debugging information.
Convenience class for custom QDebug operators.
The QDir class provides access to directory structures and their contents.
static bool isAbsolutePath(const QString &path)
The QFileInfo class provides system-independent file information.
QString absoluteFilePath() const
template< typename Enum > size_t qHash(QFlags< Enum > flags, size_t seed=0) noexcept
size_t qHash(const QUrl &url, size_t seed) noexcept
The QLatin1String class provides a thin wrapper around an US-ASCII/Latin-1 encoded string literal.
QString arg(Args &&...args) const
qsizetype size() const noexcept
void reserve(qsizetype size)
void append(parameter_type t)
The QString class provides a Unicode character string.
QString right(qsizetype n) const
QByteArray toLatin1() const &
QString & prepend(QChar c)
qsizetype lastIndexOf(QChar c, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
const_iterator constEnd() const
bool startsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
void reserve(qsizetype size)
static QString fromLatin1(QByteArrayView ba)
void truncate(qsizetype pos)
static QString fromUtf8(QByteArrayView utf8)
QString mid(qsizetype position, qsizetype n=-1) const
const QChar at(qsizetype i) const
bool endsWith(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
int compare(const QString &s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
static QString number(int, int base=10)
QString left(qsizetype n) const
static QString static QString qsizetype indexOf(QChar c, qsizetype from=0, Qt::CaseSensitivity cs=Qt::CaseSensitive) const
QString trimmed() const &
QString & remove(qsizetype i, qsizetype len)
const_iterator constBegin() const
The QStringList class provides a list of strings.
The QStringView class provides a unified view on UTF-16 strings with a read-only subset of the QStrin...
constexpr void truncate(qsizetype n) noexcept
constexpr qsizetype length() const noexcept
constexpr void chop(qsizetype n) noexcept
constexpr bool isEmpty() const noexcept
constexpr qsizetype size() const noexcept
constexpr QStringView left(qsizetype n) const noexcept
bool endsWith(QStringView s, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
int compare(QStringView other, Qt::CaseSensitivity cs=Qt::CaseSensitive) const noexcept
constexpr QStringView mid(qsizetype pos, qsizetype n=-1) const noexcept
The QUrl class provides a convenient interface for working with URLs.
static QUrl fromLocalFile(const QString &localfile)
QString userInfo(ComponentFormattingOptions options=PrettyDecoded) const
static QList< QUrl > fromStringList(const QStringList &uris, ParsingMode mode=TolerantMode)
QString fragment(ComponentFormattingOptions options=PrettyDecoded) const
bool operator!=(const QUrl &url) const
bool matches(const QUrl &url, FormattingOptions options) const
QString url(FormattingOptions options=FormattingOptions(PrettyDecoded)) const
QString query(ComponentFormattingOptions=PrettyDecoded) const
static QByteArray toAce(const QString &domain, AceProcessingOptions options={})
bool operator<(const QUrl &url) const
QUrl & operator=(const QUrl ©)
QString fileName(ComponentFormattingOptions options=FullyDecoded) const
static QStringList toStringList(const QList< QUrl > &uris, FormattingOptions options=FormattingOptions(PrettyDecoded))
QUrl resolved(const QUrl &relative) const
void setPassword(const QString &password, ParsingMode mode=DecodedMode)
void setUserName(const QString &userName, ParsingMode mode=DecodedMode)
void setFragment(const QString &fragment, ParsingMode mode=TolerantMode)
static QString fromPercentEncoding(const QByteArray &)
QString userName(ComponentFormattingOptions options=FullyDecoded) const
QString host(ComponentFormattingOptions=FullyDecoded) const
void setQuery(const QString &query, ParsingMode mode=TolerantMode)
static QUrl fromUserInput(const QString &userInput, const QString &workingDirectory=QString(), UserInputResolutionOptions options=DefaultResolution)
bool operator==(const QUrl &url) const
QByteArray toEncoded(FormattingOptions options=FullyEncoded) const
QString password(ComponentFormattingOptions=FullyDecoded) const
static QByteArray toPercentEncoding(const QString &, const QByteArray &exclude=QByteArray(), const QByteArray &include=QByteArray())
void setUrl(const QString &url, ParsingMode mode=TolerantMode)
QString authority(ComponentFormattingOptions options=PrettyDecoded) const
bool isParentOf(const QUrl &url) const
QUrl adjusted(FormattingOptions options) const
static QUrl fromEncoded(const QByteArray &url, ParsingMode mode=TolerantMode)
void setScheme(const QString &scheme)
QString errorString() const
static QString fromAce(const QByteArray &domain, AceProcessingOptions options={})
void setHost(const QString &host, ParsingMode mode=DecodedMode)
int port(int defaultPort=-1) const
void setAuthority(const QString &authority, ParsingMode mode=TolerantMode)
QDataStream & operator>>(QDataStream &in, QUrl &url)
void setUserInfo(const QString &userInfo, ParsingMode mode=TolerantMode)
void setPath(const QString &path, ParsingMode mode=DecodedMode)
QString toDisplayString(FormattingOptions options=FormattingOptions(PrettyDecoded)) const
QString toString(FormattingOptions options=FormattingOptions(PrettyDecoded)) const
QDataStream & operator<<(QDataStream &out, const QUrl &url)
QString toLocalFile() const
QString path(ComponentFormattingOptions options=FullyDecoded) const
bool setScheme(const QString &value, int len, bool doSetError)
void appendPassword(QString &appendTo, QUrl::FormattingOptions options) const
void setPath(const QString &value, int from, int end)
void appendHost(QString &appendTo, QUrl::FormattingOptions options) const
void setFragment(const QString &value, int from, int end)
ErrorCode validityError(QString *source=nullptr, int *position=nullptr) const
std::unique_ptr< Error > cloneError() const
void setPassword(const QString &value, int from, int end)
QString toLocalFile(QUrl::FormattingOptions options) const
std::unique_ptr< Error > error
void setError(ErrorCode errorCode, const QString &source, int supplement=-1)
QString mergePaths(const QString &relativePath) const
@ InvalidIPv6AddressError
@ InvalidIPv4AddressError
@ InvalidCharacterInIPv6Error
@ AuthorityPresentAndPathIsRelative
@ AuthorityAbsentAndPathIsDoubleSlash
@ RelativeUrlPathContainsColonBeforeSlash
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)
void setUserInfo(const QString &userInfo, int from, int end)
void setUserName(const QString &value, int from, int end)
void setQuery(const QString &value, int from, int end)
bool hasAuthority() const
void appendQuery(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
void appendFragment(QString &appendTo, QUrl::FormattingOptions options, Section appendingTo) const
bool validateComponent(Section section, const QString &input, int begin, int end)
bool setHost(const QString &value, int from, int end, QUrl::ParsingMode mode)
void parse(const QString &url, QUrl::ParsingMode parsingMode)
void setAuthority(const QString &auth, int from, int end, QUrl::ParsingMode mode)
The QUrlQuery class provides a way to manipulate a key-value pairs in a URL's query.
constexpr bool testFlag(E1 f) const
QHash< int, QWidget * > hash
[35multi]
QHighDpiScaling::Point position(T, QHighDpiScaling::Point::Kind)
void toString(QString &appendTo, IPv4Address address)
bool parseIp4(IPv4Address &address, const QChar *begin, const QChar *end)
const QChar * parseIp6(IPv6Address &address, const QChar *begin, const QChar *end)
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION QByteArrayView trimmed(QByteArrayView s) noexcept
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp *numpix else pixst endif endm macro vuzp8 reg2 vuzp d d ®2 endm macro vzip8 reg2 vzip d d ®2 endm macro pixdeinterleave basereg basereg basereg basereg basereg endif endm macro pixinterleave basereg basereg basereg basereg basereg endif endm macro PF boost_increment endif if endif PF tst PF addne PF subne PF cmp ORIG_W if endif if endif if endif PF subge ORIG_W PF subges if endif if endif if endif endif endm macro cache_preload_simple endif if dst_r_bpp pld[DST_R, #(PREFETCH_DISTANCE_SIMPLE *dst_r_bpp/8)] endif if mask_bpp pld endif[MASK, #(PREFETCH_DISTANCE_SIMPLE *mask_bpp/8)] endif endif endm macro ensure_destination_ptr_alignment process_pixblock_tail_head if beq irp skip1 beq endif SRC MASK if dst_r_bpp DST_R else add endif PF add sub src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head pixblock_size cache_preload_simple process_pixblock_tail pixinterleave dst_w_basereg irp beq endif process_pixblock_tail_head tst beq irp if pixblock_size chunk_size tst beq pixld SRC pixld MASK if DST_R else pixld DST_R endif if
QT_WARNING_POP void qAtomicAssign(T *&d, T *x)
void qAtomicDetach(T *&d)
QString qt_normalizePathSegments(const QString &name, QDirPrivate::PathNormalizations flags, bool *ok)
EGLOutputLayerEXT EGLint EGLAttrib value
QT_BEGIN_INCLUDE_NAMESPACE typedef unsigned char uchar
GLenum GLuint GLenum GLsizei length
GLint GLint GLint GLint GLint x
[0]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLint GLint GLint GLint GLint GLint GLint GLbitfield mask
GLsizei GLsizei GLchar * source
GLuint GLuint64EXT address
GLsizei const GLchar *const * path
GLenum GLenum GLenum input
#define Q_ASSERT_X(cond, x, msg)
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)
#define QStringLiteral(str)
QT_BEGIN_NAMESPACE void qt_from_latin1(char16_t *dst, const char *str, size_t size) noexcept
QT_BEGIN_NAMESPACE Q_AUTOTEST_EXPORT qsizetype qt_urlRecode(QString &appendTo, QStringView url, QUrl::ComponentFormattingOptions encoding, const ushort *tableModifications=nullptr)
QString qt_ACE_do(const QString &domain, AceOperation op, AceLeadingDot dot, QUrl::AceProcessingOptions options)
QTextStream out(stdout)
[7]
QUrl url("http://www.example.com/List of holidays.xml")
[0]
The QLatin1Char class provides an 8-bit ASCII/Latin-1 character.
T1_FIELD_DICT_PRIVATE password