Commit Graph

36754 Commits

Author SHA1 Message Date
Allan Sandfeld Jensen
ad8df72156 Fix regression in QPointF::operator==
Handle hard zero independently in each coordinate, otherwise hard zero
is never equal to anything but itself.

Task-number: QTBUG-69368
Change-Id: I8b1131472bb92efc706a04e0b067e2211a5ccb0c
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-07-09 15:38:31 +00:00
Andre Hartmann
1a5d3a7300 QLocale: Convert the ok checks to nullptr
And stick to one style in the same file.

Change-Id: I8a9a15425dadf4b480f63b68860de9276dbb787c
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-07-09 12:17:44 +00:00
Thiago Macieira
d13d7f87ae Plugins: remove unused macro
Change-Id: I117816bf0f5e469b8d34fffd153db690b7ca8de3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2018-07-09 00:18:33 +00:00
Thiago Macieira
12cf0dbfe5 SIMD: Change the way we declare constants for x86
We need to use macros because MSVC is a crappy C compiler.

Change-Id: Ieb48f7c0dd0e4e0fb35efffd153b8af62d34ebdf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-07-09 00:18:30 +00:00
Thiago Macieira
5219c37f7c QLibrary: find AVX2 (Haswell) optimized plugins and libraries
Libraries are placed in a subdir "haswell/" of the main library dir,
whereas plugins are simply named with ".avx2" appended to the plugin
name (plugin.so.avx2). The "haswell/" library directory suffix is a
convention found in glibc since version 2.26, whereas the ".avx2" and
".avx512" suffixes are a convention found in the Clear Linux OS for
Intel Architecture.

This patch implements this for all Unix OSes, except for Darwin, where
the fat file format already has a sub-architecture for Haswell
(x86_64h).

We could also implement the "sse2/" subdir search for libraries, but I
don't think it's worth the cost in 2018.

Change-Id: Iff4151c519c144d580c4fffd1539fe5ee9a4d7b1
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-07-09 00:18:27 +00:00
Thiago Macieira
c3a4ec5d0b SIMD: Add a haswell sub-architecture selection to our support
As the comment says, Haswell is a nice divider and is a good
optimization target.

I'm using -march=core-avx2 instead of -march=haswell because the latter
form was only added to GCC 4.9 but we still support 4.7 and that has
support for AVX2.

This commit changes the AVX2-optimized code in QtGui to Haswell-
optimized instead. That means, for example, that qdrawhelper_avx2.cpp
can now use the FMA instructions.

Change-Id: If025d476890745368955fffd153129c1716ba006
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-07-09 00:18:24 +00:00
Tor Arne Vestbø
746f15d0c2 macOS: Remove dead accessibility debug code in QNSView
Change-Id: I00d7f59576d8315f47ea70404460a6e2d133dd1f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-08 10:50:35 +00:00
Tor Arne Vestbø
1918674309 macOS: Organize QNSView accessibility code like the rest of the class
Drive-by style-fixes were applied as well.

Change-Id: I22c17925be41eeaac692ab776dd5b46791265cb3
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-08 10:50:34 +00:00
Tor Arne Vestbø
2d01de4e87 macOS: Add missing m_ prefix to QNSView currentWheelModifiers member
Change-Id: I057db59797f1e18c3a8fc5386f7e1295fe352e02
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-08 10:50:34 +00:00
Tor Arne Vestbø
012af8abf8 macOS: Remove unused QNSView member 'currentCustomDragTypes'
Change-Id: Id2e37cc81c24edce37cac2bfa843ee669fd13d98
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-08 10:50:34 +00:00
Tor Arne Vestbø
573c81da9b macOS: Merge the two QNSView initializers
We never call [QNSView init] directly, so there's no point in splitting
up the logic.

Change-Id: Ie40705a3a78c0d732a3f3378c6e8fa76dc6c68e7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-08 10:50:33 +00:00
Frederik Gladhorn
23e20e4030 Add logging for QAccessibleCache
Change-Id: I2cbaf6c6dfb80b2b5c2732f1633da411fd816710
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2018-07-08 06:37:56 +00:00
Frederik Gladhorn
4fa12d8553 Fix deletion of items in QAccessibleCache
Items in the cache may be part of the parent/child hierarchy. Make sure
not to have dangling pointers in the cache, but rather cleanly remove
all interfaces that get deleted since they may delete each other (TabBar
deletes its child interfaces for example.

Task-number: QTBUG-69283
Change-Id: Iad17cd1d3356804b3d8cbba8632ec22b836c3521
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-08 06:37:48 +00:00
Frederik Gladhorn
2a00a5d70b QAccessibleTabButton: fix isValid
The button interface is faking everything to represent the buttons when
it comes to accessibility, since they are not represented by a QWidget.
When the parent TabBar is in its destructor, isValid should return false
to prevent accessing it.

Task-number: QTBUG-69283
Change-Id: Ifedf3fa45f9106723afb0b04922b071a3c5467c3
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2018-07-08 06:37:43 +00:00
Andre Hartmann
f98ee77cd3 QByteArray: toInt() and toDouble() ignore surrounding whitespaces
[ChangeLog][QtCore][QByteArray] QByteArray::toInt(),
QByteArray::toDouble() and the other number conversion functions
now ignore leading and trailing whitespaces, as their QString
counterparts already did. For consistency reasons, the same
behavior was added to qEnvironmentVariableIntValue() also.

Task-number: QTBUG-66187
Change-Id: I8b5e478ea8577b811d969286ea9e269f539c1ea4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-07-07 19:58:18 +00:00
Tor Arne Vestbø
85472b6b02 macOS: Deliver update request via CVDisplayLink if swapInterval > 0
We use GCD for marshaling the display link update over to the main
thread, as Qt requires that the update request is delivered there.

Change-Id: I318a5b8f27dc5094ce71244401308a4044c41b39
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-07 14:40:57 +00:00
Tor Arne Vestbø
b3dc96ef4c macOS: Move wantsBestResolutionOpenGLSurface logic to QNSView initializer
Change-Id: If9d76a8e82ce034eccc5130e036dfeae12377cac
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-07 14:40:55 +00:00
Tor Arne Vestbø
3235140517 macOS: Remove explicit call to setWindowIcon in QCocoaWindow ctor
Window setup should happen in QCocoaWindow::recreateWindowIfNeeded(),
and there we already call setWindowFilePath(), which takes care of
setting the window icon.

Change-Id: Iaa2f42c694cf8d251703cc56648e5819edd79bec
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-07 14:40:54 +00:00
Gatis Paeglis
ecb8478819 tests: port tst_QGraphicsProxyWidget to QTEST_QPA_MOUSE_HANDLING
... and various other cleanups.

This patch re-factors tests that relied on QCursor API (directly or indirectly via
QTest::mouseMove widget overload) to use the QTEST_QPA_MOUSE_HANDLING code path.
Misuse of QCursor API causes tests to be flaky.

Removed Qt::X11BypassWindowManagerHint as it is not really needed. Based on
the comment where this flag is used, it would be needed for all test functions
that use mouse events. That assumption is not valid. A window is expected to have
received its final position when QTest::qWaitForWindowActive() returns. There were
issues with this on Unity, but those have been fixed.

Un-QSKIP-ed QTBUG_6986_sendMouseEventToAlienWidget for Q_OS_WIN.
Un-QSKIP-ed hoverEnterLeaveEvent for all platforms.
Un-QSKIP-ed bypassGraphicsProxyWidget for Q_OS_MAC and Q_OS_WIN as the test
passes on those platforms. According to QTBUG-33067 it used to crash with 5.2.0.

Removed unnecessary mouseMove() and stray mouseRelease() in mouseDoubleClickEvent().
Removed unnecessary show()/setVisible() on items that are being added to the scene -
items are visible by default.

Among other randomly spotted issues, one worth mentioning is that when adding
items to the scene after the view is already shown, we need to ensure that the scene
is updated (e.g QSignalSpy + QGraphicsScene::changed) before interacting with it. As
an example, mousePressReleaseEvent() only passed because of random luck that the
invalid coordinates were still within the bounding rect of the button. This patch
does not attempt to cleanup all instances of this anti-pattern.

Task-number: QTBUG-52546
Task-number: QTBUG-26948
Task-number: QTBUG-33067
Change-Id: I2ccbc004c1cb4f5b31c70c8568ee591c458d8446
Reviewed-by: Kari Oikarinen <kari.oikarinen@qt.io>
2018-07-07 13:23:17 +00:00
Simon Hausmann
42cc42acae Fix QString::localeAwareCompare with composed/decomposed strings on macOS
Similar to commit cd64a96b31 we also need
to normalize the strings before comparison in order to be compliant with
the ECMAScript test suite.

This patch also adds the remaining test cases from
built-ins/String/prototype/localeCompare/15.5.4.9_CE.

Since the same tests are also failing with strcoll/qt_compare_strings,
this simplifies the code to always normalize except when using ICU
(which gets it right by default).

Change-Id: I16b32da7fc70dc7e6725c49f66fe9941d0bf3a47
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2018-07-06 20:49:29 +00:00
Tor Arne Vestbø
13337096f9 Re-enable QGradient::Preset documentation by explicitly ignoring warnings
Change-Id: Ibde6d905c74a571dc2e9d2942e99682e0a4f9b8c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2018-07-06 13:59:10 +00:00
Allan Sandfeld Jensen
a149659c5c Provide access to QSslCertificate on OpenSSL free Windows builds
The QSslCertificate class can parse and provide details about SSL
certificates without a proper backend, this can for instance be used
by QtWebEngine to provide metadata about certificates, even on Windows
builds without OpenSSL, as QtWebEngine does not use Qt's SSL stack.

Change-Id: Ib48f1ed7315c5bc66721ec87ee651d8372f07f71
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2018-07-06 06:52:06 +00:00
Tuomas Heimonen
8c680ab469 tst_qnetworkinterface: Fix for case of zero interface
Change-Id: I3e43acf2e96635c39fcb366c8d161a9287af01b1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-07-06 06:39:36 +00:00
Tor Arne Vestbø
6caaa050ab macOS: Ensure all windows are created on a valid screen
We rely on AppKit repositioning the window if the original position
is not on any of the available screens. We do this by keeping the
original position, but using the primary screen as reference.

This doesn't work unless the window has a title bar, so in the corner
case where the window has an invalid position, we apply the title bar
style mask for a brief moment, so that AppKit will place the window
correctly.

Task-number: QTBUG-69221
Change-Id: If66cac36bf36f051570ba5854951ce4504fe771f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2018-07-05 20:07:09 +00:00
Thiago Macieira
514972544a QCborArray & Map: implement move semantics
There isn't a lot of efficiency gain, since QCborValue was already
refcounted. This saves two atomic operations and an out-of-line call. In
the case of QCborValueRef (which includes QCborMap), because we reset
the container pointer in inline code, the call to QCborValue::dispose()
is also suppressed.

Change-Id: Icc2c231dc2c44abdb087fffd1533eaba7a9c70fa
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2018-07-05 14:56:15 +00:00
Albert Astals Cid
fddf09363e QFutureInterface::reportFinished use nullptr instead of 0
So that users don't get a warning if using
-Wzero-as-null-pointer-constant

Change-Id: Ia15b5f380a2f6a93e05eec06646608e480cdf5d2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-07-05 15:22:35 +00:00
Thiago Macieira
340472534c QCborValue: refactor extended types so isTag() is true
This makes QCborValue more future compatible, as code written today for
tags that QCborValue does not recognize will continue to work if
QCborValue gains support for it in the future.

This change also obviates the need for reinterpretAsTag(), which I had
not written unit tests for as I knew this change was coming.

Change-Id: I052407b777ec43f78378fffd15302bdc34f66755
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-07-05 14:56:12 +00:00
Thiago Macieira
55fc9a5dd9 Fix Clang annoying, useless warning about using %llu when it wants %lu
The types have the same size. So it's stupid for it to make the issue a
warning...

 qkmsdevice.cpp:737:88: error: format specifies type 'unsigned long long' but the argument has type '__u64' (aka 'unsigned long') [-Werror,-Wformat]

Change-Id: I117816bf0f5e469b8d34fffd153e640b62bef635
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2018-07-05 14:50:35 +00:00
Thiago Macieira
f63e2a9175 Add missing override keyword found by Clang
qbsdfbscreen.h:57:10: error: 'initialize' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]

Change-Id: I117816bf0f5e469b8d34fffd153e649318d2fd7c
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
2018-07-05 14:49:46 +00:00
Alexandru Croitor
22c1a46a03 macOS: Remove declarative override of -[NSView wantsLayer]
The -[NSView setWantsLayer:] method may have side effects that
extend beyond just setting an internal boolean property, so
we need to ensure it gets called.

This was observed on e.g. macOS 10.12.5, where the method
ends up creating the internal backing layer. On later macOS
versions the method just emits KVO notifications for wantsLayer,
but these may in turn result in similar logic being triggered.

The issue was masked somewhat by AppKit itself calling the
method from e.g. -[NSWindow setContentView:], so we still got
the backing layer created. The problem appeared when running
binaries built against an older SDK (10.6 in this case), which
triggered AppKit to not call -[NSView setWantsLayer:], due to
__NSViewLayerBackWindowFrame() in that case returning false.

This change removes the overridden -[NSView wantsLayer], and replaces
it with an explicit call to -[NSView setWantsLayer] when creating
a new QNSView, essentially revering c8c8cc790a.

Task-number: PYSIDE-724
Task-number: PYSIDE-734
Change-Id: Idaff4ed38838311b37da4925b1eec241e077dbcc
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2018-07-05 14:49:44 +00:00
Ryan Chu
9e24b43cb9 Docker-based test servers for network-related Qt autotests
The existing network test server has some limitations. Most notably, it
is not accessible by every Qt developer. Also, some services don't allow
simultaneous access, which causes flaky test results.

Instead of centralizing all the services to one physical machine, the
idea is to build up several dedicated servers inside separate Docker
containers.

1. Create testserver.pri and integrate it into the make check command of
   Qt Test.

2. Define QT_TEST_SERVER flag for changing test parameters at compile
   time.

Task-number: QTQAINFRA-1686
Change-Id: I0422ddb97eb8c11b4818771454851d19671253b1
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
Reviewed-by: Ryan Chu <ryan.chu@qt.io>
2018-07-05 14:13:36 +00:00
Thiago Macieira
7cd7d6ab3f QCborMap: Add reserve() to the QHash conversion
Change-Id: Id4c99d74841842cfa442fffd15371720f9566708
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-07-05 13:44:18 +00:00
Timur Pocheptsov
5bd9f98342 QDtls - handle server-side timeouts
According to RFC 6347 a DTLS server also must retransmit buffered message(s)
if timeouts happen during the handshake phase (so it's not a client only as
I initially understood it).

Conveniently so an auto-test is already in place and needs just a tiny
adjustment - handshakeWithRetransmission covers both sides.

Change-Id: If914ec3052e28ef5bf12a40e5eede45bbc53e8e0
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2018-07-05 13:39:46 +00:00
Edward Welbourne
2afa6e5f94 tst_QSqlThread: match #if-ery on declaration to use
Variable was declared outside #if-ery but only used inside,
leading to warnings when the define wasn't set.

Change-Id: Iad6a236bdf76b8ca0a58a84509d19f7e1a3e2df2
Reviewed-by: Mikhail Svetkin <mikhail.svetkin@qt.io>
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2018-07-05 13:39:02 +00:00
James McDonnell
b14527f529 Make QQnxIntegration a singleton
Turn all the static members and functions into regular members and
functions.

Change-Id: Ib37d9bdd1a84e512013af7d334e04cd2b1da640e
Reviewed-by: Dan Cape <dcape@qnx.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2018-07-05 13:35:50 +00:00
Oliver Wolff
d133b02a3b ANGLE: embed version information into libEGL, libGLESv2 and QtANGLE
Task-number: QTBUG-60806
Change-Id: I8bbf0baedeac9a0c0c66739713d4a5a92013d56a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2018-07-05 13:24:35 +00:00
Mikhail Svetkin
41705529d9 xcb: Refactor align of xcb events
Use C++11 alignas instead of a union to pad the
xcb_*_event. It allows using the struct directly
without accessing a union member.

Change-Id: I221a6708ef7af844bd6b71a57dcbab75e1319c72
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
2018-07-05 13:17:42 +00:00
Michael Pyne
4b10298de5 CBOR: Avoid conflicts with X11 #defines in our enums
Since the .cpp files in the implementation don't actually include the
offending X11 headers they don't need the fix. This just adjusts the
headers themselves to unbreak the namespace for just long enough to
declare the right enums.

Change-Id: If33757aa2289f8fe7b81836f9c08b0ad4592bc32
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-07-04 23:36:17 +00:00
Giuseppe D'Angelo
21ea8c05ff Tracepoints: add missing include
So to make qtrace_p.h self-contained.

Change-Id: Ic94b20334b495cc8f9c6ff7b481ef3bd7621df08
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2018-07-04 23:24:41 +00:00
Giuseppe D'Angelo
5e5072c654 Tracepoints: trace QObject construction and destruction
Change-Id: I10f5ef391a2d3059ed5e8a26afe5e191adc31e85
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2018-07-04 23:24:38 +00:00
Mårten Nordheim
de0977e1c0 Android: QEXPECT_FAIL tst_QTextDocument::task240325
Task-number: QTBUG-69242
Change-Id: Ib63fc17b3f8ffb73e36c77a00d55b8200d058ef1
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
2018-07-04 14:32:23 +00:00
Christoph Keller
ebd04a5aa8 qmake: Fix xcode problems with invalid build paths
Qmake accidentally replaced all occurrences of the library name in the
build path. This would lead to problems if the (shadow) build path also
contains the library name.

Task-number: QTBUG-69279
Change-Id: If99acccc779ff0874433b193be7e7fc53625b245
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2018-07-04 14:13:05 +00:00
Edward Welbourne
9fc6b021f9 Fix a mis-use of QSKIP() to use qDebug() instead
QSKIP() discards the whole test it appears in; so is not the right way
to announce that (and why) the test has just skipped a few sub-tests.
This was concealing a later failure on macOS, here fixed.

Change-Id: I9b07208413b9e101569a22505ad41f07ade4062b
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2018-07-04 07:07:04 +00:00
Edward Welbourne
64d6b82bf7 Fix tst_QLocale's mis-use of QSKIP() to use qDebug() instead
QSKIP() discards the whole test it appears in; so is not the right way
to announce that (and why) the test has just skipped a few sub-tests.
This was concealing a later failure on macOS, here fixed.
This matches an earlier fix for tst_QDateTime.

Change-Id: Idaf34a9d60d84202fd41d15455209457cc281f60
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-07-04 07:06:53 +00:00
Thiago Macieira
222e85d434 Doc: Fix list of which types are allowed in the endian functions
This commit also fixes a grammar mistake (endian → endianness) and the
fact that some functions failed to list that they supported the unsigned
integer types as template arguments.

Change-Id: I19445f335e82420fa654fffd15334e52ef3e744d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2018-07-04 03:04:47 +00:00
Thiago Macieira
e79b56e504 Improve the UTF-16 and UTF-32 codecs with <qendian.h>
This is just the low-hanging fruit. Those algorithms could be much
further improved, but they are so seldom-used that it's not worth it.

Change-Id: I6a540578e810472bb455fffd15332b2a7a1ac901
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-07-04 03:04:43 +00:00
Thiago Macieira
d0427759c6 Add qbswap for a memory region
The compiler was generating some vectorized code for qresource.cpp but
it wasn't very efficient. So improve upon it and make use in other
places where we read UTF-16BE strings.

[ChangeLog][QtCore] Added an overload of q{To,From}{Big,Little}Endian
that operates on a memory region.

Change-Id: I6a540578e810472bb455fffd1531fa2f1d724dfc
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2018-07-04 03:04:40 +00:00
Thiago Macieira
c053f9d154 Rename qendian.qdoc to qendian.cpp
I'm going to add code in the next commit.

Change-Id: I6a540578e810472bb455fffd153329de04c1c332
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2018-07-04 03:04:36 +00:00
Thiago Macieira
bcaa3cd9d6 QCborValue: implement move semantics for QCbor{Array,Map} constructors
Happens a lot because of the implicit conversions. So I made it inline.

Change-Id: Icc2c231dc2c44abdb087fffd1533f311b95460b8
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-07-04 03:04:26 +00:00
Thiago Macieira
2bb44414ff QCborArray & Map: implement efficient take() / extract()
Questions:
 1) should QCborMap::extract return value_type (a pair) instead of just
    the value?
 2) should the both return the iterator to the next element too, like
    erase()?

Change-Id: I052407b777ec43f78378fffd15302a9c14468db3
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2018-07-04 03:04:21 +00:00