... except where they are actually the component under test.
Java-style iterators are scheduled for deprecation.
Change-Id: If4399f7f74c5ffc0f7e65205e422edfa1d908ee8
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
They are going to be deprecated.
Add a strategic break. This was a pre-existing problem: the comment
claims that h is invalid (though I personally don't see it), but
then goes on to check the loop condition (which, in the mutable
Java iterator case, involves calling h.cend()). We now cache the
end iterator, so if there ever was a problem, it's probably a
lesser one now, but it's still not kosher, and a debug version of
QHash would find it, so break out explicitly.
Saves ~200b in text size on optimized GCC 9.1 Linux AMD64 builds,
ie. ~100b per loop.
Change-Id: I7684485b55fb23a8cf882f89621ebb75a0e607b5
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
This requires making QDebugStateSaver hold QDebug::Stream directly, not
QDebug by reference, as the referenced object will have been moved from
when ~QDebugStateSaver executes. The stream object, however, will still
be around.
Change-Id: I0ca2eb60cb9b68ea3835d9a9ff5e295d9b1c5fb5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: David Faure <david.faure@kdab.com>
QSaveFile should preferably be used by editor applications to catch
write errors.
Task-number: QTBUG-60635
Change-Id: Ia609435871b56b45714c3dd3d32bbc85b5cb4dd5
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Also use qUtf16Printable() and qErrnoWarning (removing explicit errno, where
present).
Saves 6.6KiB in text size on optimized Linux AMD64 GCC 9.1 build across
all .so's that link to QtInputSupport.a.
Change-Id: I1def2cfabd2eed65390099cd1d06f8061a9355be
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
The only reason the code used QSharedPointer is that it used QVector
to hold a collection of them, and QVector infamously cannot hold
move-only types such as std::unique_ptr.
Fix by using std::vector<std::unique_ptr> instead. Also, pass the
objeccts into non-sink functions by raw pointer instead of shared_ptr.
As a drive-by, replace clear-following-iterate by the for-exchanged
pattern.
Change-Id: I605fbb98af840c1b93eab9e65c07defd6e7b39e1
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Extracted from the SVG names patch.
It basically just requires adding a constexpr constructor to the
inner union, then sprinkling constexpr on the existing ones.
Do minor refactorings as drive-by.
Change-Id: I60e7a1c9068def3507cb07440450e51673269f84
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
strlen on literals gets typically optimized out nowadays.
Adjust callee side to handle the off-by-one between sizeof(literal)
and strlen().
Change-Id: I1551f69a160922681d66024701ba1bd8f6dc03bf
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
The previous work-around fails, probably because of
cross-dependencies. E.g. we have this in QtScXml:
In file included from /home/qt/work/install/include/QtCore/qsharedpointer.h:48:0,
from ../../src/scxml/qscxmltabledata_p.h:55,
from ../../src/scxml/qscxmltabledata.cpp:40:
/home/qt/work/install/include/QtCore/qsharedpointer_impl.h:687:12: error: ‘QPointer’ does not name a type; did you mean ‘pointer’?
friend QPointer<X>
^~~~~~~~
pointer
/home/qt/work/install/include/QtCore/qsharedpointer_impl.h:689:23: error: ‘QSmartPointerConvertFunctor’ in namespace ‘QtPrivate’ does not name a template type
friend QtPrivate::QSmartPointerConvertFunctor<QWeakPointer>;
^~~~~~~~~~~~~~~~~~~~~~~~~~~
To fix, grand friendship only to a non-template class with a templated
static method that returns internalData(). This fixes most users,
except in qmetatype.h, which does not include qsharedpointer.h. In
order to use the non-template class in there, we need to delay its
name lookup to instantiation time. We do this by artificially making
it a dependent name, by using a class template that inherits from
our befrieded class.
Change-Id: I12b427f1fe9503df819ea5436d780972d6402e68
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
C++11 allows non-POD-types in unions, so the test didn't test anything.
Use a static_assert over std::is_pod instead.
Change-Id: Ida7ef0551ae6ae07357a987a409294d2a386be2f
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
The check was a misnomer -- non-POD types can go in unions
since C++11. And we may want them, e.g. types without a trivial
default constructor. What we really want is to check for a
literal type (so that the array payload can be built entirely
at compile time, and put in .rodata). So, amend the check.
Also, make the dummy array constexpr, to be sure that we are
indeed building the payload using constexpr constructors.
That would make the first check redundant, but the fact that
we're still using a macro for constexpr makes me think that
not all compilers support it, so I'm leaving the first check
in...
Change-Id: I9f1473aa74dff5b6b6535ae4cd8325451c0b18e6
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Plain load() / store() have already relaxed semantics. This
can be surprising -- std::atomic::load()/store() are actually
sequentially consistent -- and introduce a pain point
if someone wants to move from Qt atomics to std:: atomics.
So just add a suffix to the functions to clarify what's the
memory ordering involved with them.
The Ops::load / ::store are temporarily left in, because other
modules depends on them. We need to port those modules away,
then they can go (it's private API anyhow).
Similarly, not deprecating anything yet, except for marking
obsolete in the docs; there's a lot of code around using
load() / store() that needs to be ported first.
[ChangeLog][QtCore][QAtomicInteger] Added loadRelaxed() and
storeRelaxed(), to be used as replacements of load() / store().
[ChangeLog][QtCore][QAtomicPointer] Added loadRelaxed() and
storeRelaxed(), to be used as replacements of load() / store().
Change-Id: Iab0a78885050379e3740f0b039ba2bef28ce3bd2
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The calendar APIs shall need fromShortMonthName() to know its year
number; so rearrange the date parsing that uses it to ensure the year
number is known in time. In the process, pass &ok to toInt() also for
the calls that get a day number (where failure's 0 return is an
adequate check for failed parse), just to be on the safe side.
Change-Id: Id09c40da9f7e70e68be440e9805a3d30a80977c6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Cleans up most of corelib to use nullptr or default enums
where appropriate.
Change-Id: Ifcaac14ecdaaee730f87f10941db3ce407d71ef9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Also remove it from versions no longer supported.
Change-Id: I03a911a349527a81846e1820f95d775fe3943450
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
RTEMS does not support poll/select and etc for files and
fcntl(fd, F_GETFD) can not say that.
Change-Id: If5ad160cd81e347fac72d2bafcb5b5bb815ed059
Reviewed-by: Ryan Chu <ryan.chu@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Fix clang-tidy warnings:
- Use range-based for and streamline some code
- Use nullptr
Change-Id: Iad43490d0e968baa76d54d3bf81558a48b19cdbd
Reviewed-by: Kari Oikarinen <kari.oikarinen@qt.io>
It's an undocumented typedef for QLatin1String.
[ChangeLog][QtCore][QLatin1Literal] The undocumented QLatin1Literal
type alias for QLatin1String is now deprecated. Use QLatin1String
instead.
Change-Id: I05eba8b857454e59b9b9d7b07c42fe6fc9c77fec
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The format conversion relies on the QOpenGLTexture header that has its
body ifdefed out with -no-opengl. However, Qt, in a very forward looking
manner, allows having Vulkan support even when OpenGL is disabled.
Assuming that the format conversion will not be used in -no-opengl
builds, put the entire function inside a #if QT_CONFIG(opengl).
Change-Id: I772e12129729d69b81159669d239ea3945a42e5a
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
That's an undocumented Qt 4/3/2 remnant, start remove usages.
Fix incorrect include header in qclass_lib_map.h as a drive-by.
Change-Id: I939be2621bc03e5c75f7e3f152546d3af6d37b91
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
RTEMS does not support fork.
RTEMS has LOCK_EX and LOCK_NB defines but does not have flock.
Change-Id: I2b1774435bc972f53596f4163ec410b9d22aca4a
Reviewed-by: Ryan Chu <ryan.chu@qt.io>
Fix deprecation warnings - replace qFindChild/Children() with
QObject::findChild/Children() and replace some 0 with nullptr.
Change-Id: If2f01d12fa91d09d98a61f73b0449a6773ac93db
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
QInputDeviceManager::DeviceType is a (non-flag) enum with all of five
values. Using a self-rebalancing rb-tree to map these to an int is
overkill. An array can do the job just as well and better, given the
enum values are consecutive, and even if some don't make sense (like
Unknown), the waste caused by unused array slots is more than
compensated by the lack of any memory allocations. Even more so as the
array API is 1:1 identical with the map's for the use-case at hand.
Saves 1.2KiB in text size on optimized Linux AMD64 GCC 9.1 builds.
Change-Id: I1bfa115ac75e2f7d9a4bd9a0e3f3241bf68c9989
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
As found by GCC, while compiling qt5/qttools/src/distancefieldgenerator/mainwindow.cpp.
Change-Id: I155c0b8b09bd12c12af0bd69e19747485be960e1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
RTEMS does not have sys/sem.h
Change-Id: I9fe5c5244a4205521493885b39fa0051abcc4539
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
ALIGN macro exists in RTEMS system headers and in sha3 library.
Change-Id: I00cbb5be5598a6a6ca1f011f199da62d658ef9d5
Reviewed-by: Ryan Chu <ryan.chu@qt.io>
When QT_NO_CAST_FROM_ASCII is in effect, `char == QLatinChar` no longer
compiles, because the QChar(char) ctor has become private.
Fix by supplying the missing mixed-type operators.
[ChangeLog][QtCore][QLatin1Char] Comparison against char now works
even in QT_NO_CAST_FROM_ASCII builds.
Change-Id: I86f5ec8e2ddfcda72f5928086cb298bd00b42544
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
[ChangeLog][QtGui] Added support for filtering Vulkan debug messages in
QVulkanInstance. This is especially useful for processing or suppressing
messages from the validation layers.
Change-Id: Idf0d7889085948daf5b1a53d2a9b11081e967609
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
We'll be adding calendar code here as well, and tools/ was getting
rather crowded, so it looks like time to move out a reasonably
coherent sub-bundle of it all.
Change-Id: I7e8030f38c31aa307f519dd918a43fc44baa6aa1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
It's perhaps best to ensure that functions we are deprecating shall no
longer be used in tests. Also, fix the "0 as nullptr" warnings.
Change-Id: I2f22c9b9482e80fa120bcd728ec269198a36678f
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
MD4C now makes it possible to detect indented and fenced code blocks:
https://github.com/mity/md4c/issues/81
Fenced code blocks have the advantages of being easier to write by hand,
and having an "info string" following the opening fence, which is commonly
used to declare the language.
Also, the HTML parser now recognizes tags of the form
<pre class="language-foo">
which is one convention for declaring the programming language
(as opposed to human language, for which the lang attribute would be used):
https://stackoverflow.com/questions/5134242/semantics-standards-and-using-the-lang-attribute-for-source-code-in-markup
So it's possible to read HTML and write markdown without losing this information.
It's also possible to read markdown with any type of code block:
fenced with ``` or ~~~, or indented, and rewrite it the same way.
Change-Id: I33c2bf7d7b66c8f3ba5bdd41ab32572f09349c47
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
MakefileGenerator::initOutPaths should only do that: init out paths.
It's not supposed to modify the content of input variables for extra
compilers. Those get "fixed" in MakefileGenerator::init below the "do
the path fixifying" comment.
The first "fixifying" would turn an absolute path in SOURCES (input
variable for the moc_source extra compiler) into a path relative to
the output directory. The second "fixifying" would mess everything up.
Fixes: QTBUG-76097
Change-Id: I8c50ef33d097dba4a1db76144c70b0677beffb6c
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
- use logarithmic QMap::find() instead of iterate-and-compare-with-key
(linear)
- don't convert a QList to a QSet just to use QSet -=, just iterate
over QSet::remove(): QSet::subtract() doesn't do anything more
fancy, either (saves memory allocations)
- replace Q_FOREACH with ranged-for, avoid copies
Change-Id: I451f034767b079efa9ee19e2c1fe7dc4af2d9bea
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Under no circumstance must Qt code define a non-public qHash()
overload of a public Qt type. If you can't provide a public qHash()
for the type, you can't use QHash. Period. This is because if we don't
provide a qHash() function, the user will have to provide one, and
then we have an ODR violation, iow: UB.
So, port away from QHash and qHash and use std::unordered_map, which
allows to pass a custom hash function - just what we needed.
Also fix other issues of the code:
- Use a function object as the deleter of the QSharedPointer, to allow
inlining the function call.
- Avoid double lookup in case of a cache miss.
- Don't use direct initialization syntax for pointer variables. That's
just ... weird.
Change-Id: Ica8bff728c1bd1cbb2fb43aa03a99bcb7ac2f7cc
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Otherwise any use of QT_DEPRECATED_SINCE will cause a warning:
src/corelib/global/qglobal.h:382:77: error: expected unqualified-id before ‘)’ token
This amends 220028d37c
Change-Id: Ifa2be1dd8852e4aac0db83b0b4ae15d2f666c550
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
QElapsedTimer does the job better and without the DST kludges.
Change-Id: Ic4a566f695648cbe069a21ea8d3e84562b665a3c
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
To make their replacements easier to find.
They're in the documentation, but weren't in the source.
Change-Id: Iea936062feaead636e3dd8e93f0b4c82ed8876cb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Use QDateTime::currentMSecsSinceEpoch() instead of a QTime with funky
wrapping at midnight and potential DST glitches.
Change-Id: I2455db5778635fc00b4ffdef6edee6d6793e50eb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Re-ran util/locale_database/cldr2qtimezone.py to add new zones to the
table.
Change-Id: I70258a9abbe9815494291deff528f3c18703de40
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
These were in qbytearray.cpp, which doesn't use them, is big and I
intend to move it to a different directory than the header,
qtools_p.h, that declares them. So move them to a small file that does
use them.
Change-Id: I5a4684f8c7628e617546019cc3f01d92d829f085
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Assigning past the end used to be supported, but isn't a good way to
do the job. Exposed by a qtxmlpatterns test that exercised this code,
which gets a warning thanks to Giuseppe's recent changes to QCharRef.
Task-number: QTBUG-76070
Change-Id: Ic254c7ffce60e3b2aafce76ab03ea5db8c68fafc
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>