summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools
Commit message (Collapse)AuthorAgeFilesLines
* Expand reporting of the Intel instruction set extensionsThiago Macieira2015-09-222-13/+155
| | | | | | | | | | | | | | | Detection for most of them is free because we're loading the entire registers anyway. The only exception is AVX512VBMI, which is in a new register we hadn't yet read from. I've also added the new GCC names so they can be used with QT_FUNCTION_TARGET. The only two exceptions are "movbe" and "popcnt", which are extremely restricted in use and we are not likely to have code dedicated to using them. Change-Id: Ib306f8f647014b399b87ffff13f1d8fd29e58be0 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Reorganize the bits for the CPU feature detectionThiago Macieira2015-09-222-85/+157
| | | | | | | | | | | | | | | Instead of trying to detect one bit and set another, let's just use the bits from the x86 CPUID instruction on x86. This makes use of the full 64-bit space now. Since MSVC doesn't like enums bigger than 32-bit, we have to store the bit number instead of the actual bit value in the constant. For that reason, I also renamed the constants, to catch anyone who was using them directly, instead of through qCpuHasFeature. Change-Id: Ib306f8f647014b399b87ffff13f1d587692d827a Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Change the CPU feature status word to be 64-bit instead of 32-bitThiago Macieira2015-09-112-25/+46
| | | | | | | | I'm going to need the extra bits for x86. Change-Id: Ib306f8f647014b399b87ffff13f1d3d23e138518 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* Doc: Move selected \keywords to be \targets insteadTopi Reinio2015-09-071-1/+1
| | | | | | | | | | | | | | QDoc now handles \keyword slightly differently - it no longer generates a unique html anchor at the location it appears in. Instead, it'll inherit the anchor of the documentation item it appears in. Therefore, switch the \keyword commands that are used for linking to a subsection within a page to be \targets instead, so they'll get an anchor and not link to the top of the page. Change-Id: Iec6d3f0edbcfb0aec95e222615eca9de2b0e153e Reviewed-by: Martin Smith <martin.smith@digia.com>
* Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2015-08-265-24/+41
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: qmake/doc/snippets/code/doc_src_qmake-manual.pro qmake/doc/src/qmake-manual.qdoc src/corelib/io/qstorageinfo_unix.cpp src/corelib/tools/qbytearray.cpp src/widgets/kernel/qwidgetwindow.cpp tests/auto/corelib/io/qprocess/tst_qprocess.cpp tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp tests/auto/network/access/qnetworkreply/BLACKLIST Change-Id: I9efcd7e1cce1c394eed425c43aa6fce7d2edf31c
| * Avoid overflow in QTime::addSecs with too big a number of secondsThiago Macieira2015-08-191-0/+1
| | | | | | | | | | | | | | | | | | | | QDateTime::addSecs needs to do something similar, but not identical because it needs the number of days too. And then there are daylight savings transitions... Task-number: QTBUG-47717 Change-Id: I7de033f80b0e4431b7f1ffff13f976f4f5e5a059 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
| * QRegularExpression: fix matching over QStringRefsGiuseppe D'Angelo2015-08-181-24/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Playing with the offset argument of pcre_exec is not equivalent to adjusting the pointer to the subject string. In particular, PCRE can go behind the offset to check for lookbehinds or "transition" metacharacters (\b, \B, etc.). This made the code that deals with QStringRefs not matching in behavior with the corresponding code dealing with QStrings. For instance, QString subject("Miss"); QRegularExpression re("(?<=M)iss"); re.match(subject.mid(1)); // doesn't match re.match(subject.midRef(1)); // matches!!! Instead, actually adjust the pointer to the subject string so that the behavior is identical. A broken test that relied on the equivalence is also removed. Change-Id: If96333241ef59621d7f5a6a170ebd0a186844874 Reviewed-by: Volker Krause <volker.krause@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Fix QChar char constructors documentationSamuel Gaist2015-08-131-2/+10
| | | | | | | | | | | | | | | | | | | | | | Reverts the wrongly added \internal and adds a warning for users that the constructors will not be available if QT_NO_CAST_FROM_ASCII is defined Task-number: QTBUG-39862 Change-Id: I038eea3f4eef0b914b470309a2f515741eec35a9 Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
| * Cocoa: fix integer multiplication overflow in qt_gettime()Michael Klein2015-08-131-0/+5
| | | | | | | | | | | | Task-number: QTBUG-24031 Change-Id: Iae00b10b6a7423508669ef173a80a03b3dd388c6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Merge "Merge remote-tracking branch 'origin/5.4' into 5.5" into refs/staging/5.5Oswald Buddenhagen2015-08-121-1/+1
| |\
| | * Merge remote-tracking branch 'origin/5.4' into 5.5Oswald Buddenhagen2015-07-171-1/+1
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: doc/global/manifest-meta.qdocconf src/corelib/global/qnamespace.qdoc src/corelib/io/qstorageinfo_unix.cpp src/corelib/tools/qtools_p.h src/sql/drivers/psql/qsql_psql.cpp Change-Id: I23a15ac84e03ad61d865e3df872b013eb0752949
| | | * Check for integer overflows in places where qAllocMore is usedMikhail Lappo2015-06-195-5/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-41230 Change-Id: Ic2167364e326092482657f2d2b4ab6ad3e5af631 (partially cherry-picked from 880986be2357a1f80827d038d770dc2f80300201) Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | | Doc: mark private QChar constructors as internalSamuel Gaist2015-08-061-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-39862 Change-Id: Ie0d533e3897200589248c803069c41661b15997e Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| * | | Add reference to QRegularExpressionSamuel Gaist2015-08-061-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently there's no mention of QRegularExpression in QRegExp's documentation. This makes it hard to find QRegularExpression for user used to QRegExp. This patch adds that missing reference. Task-number: QTBUG-46816 Change-Id: If3a981d5759fbed3eecd07e046882e6da378cc4e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
* | | | Fix documentation typoLouai Al-Khanji2015-08-251-1/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: Ic6271a19999555ef2a1dfa90cebfb92b270a3809 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | | | Fix qdoc warning by documenting function argumentLouai Al-Khanji2015-08-251-2/+2
| | | | | | | | | | | | | | | | | | | | Change-Id: I3d80af0b1226fbe601619420dbb35106bb3d4eec Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | | | Fix warning due to undocumented function argumentLouai Al-Khanji2015-08-251-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Ia3a54f296b1edcdce5950bf7acad1b4436d9564a Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | | Fix warning due to undocumented function argumentLouai Al-Khanji2015-08-251-0/+2
| | | | | | | | | | | | | | | | | | | | Change-Id: I00654b72a654c7b2a762ace773a9caef37b1bdd5 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | | | Fix permissions on qalgorithms.hThiago Macieira2015-08-251-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 046f3254838715079b853ab4e15eed4ef464fb30 accidentally made it executable. Change-Id: I7de033f80b0e4431b7f1ffff13fc9872fa64ae9d Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | | | Fix compilation with ICC on WindowsThiago Macieira2015-08-251-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unlike MSVC, ICC *does* support constexpr, but on Windows it will not define __GNUC__, so we ended up in the multi-line alternative. That is not permitted in C++11, only in C++14. qalgorithms.h(659): error: statement may not appear in a constexpr function Change-Id: I7de033f80b0e4431b7f1ffff13fc96245ee9a846 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* | | | Add support for same-file intrinsics with Clang 3.7Thiago Macieira2015-08-221-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It supports the same feature that GCC does Change-Id: Ib306f8f647014b399b87ffff13f1f3159898741b Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | | Fix Clang warning about copy elisionThiago Macieira2015-08-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Found by Clang 3.7: qcommandlineoption.cpp:287:12: error: moving a local object in a return statement prevents copy elision [-Werror,-Wpessimizing-move] Change-Id: I7de033f80b0e4431b7f1ffff13f97fb480001d36 Reviewed-by: David Faure <david.faure@kdab.com>
* | | | Doc: Remove invalid uses of \relates commandTopi Reinio2015-08-193-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | A function cannot be both a member and a non-member of the same class. Change-Id: I07d1e04c09fea2ba1171b3692e716660044cd37a Reviewed-by: Martin Smith <martin.smith@digia.com>
* | | | doc: Add a few missing const keywords in \fn commandsMartin Smith2015-08-162-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds "const" to a few \fn commands for new operators in QHash and QMap. Change-Id: I93cf7aaf88fcb4db17de5810b555b978e8119e20 Task-number: QTBUG-47669 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | | | qdoc: Allow formal parameters in link targetsMartin Smith2015-08-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This update allows qdoc to handle \l commands for linking to functions, where the formal parameters are included in the link target. For example, \l {QWidget::find(QString name)} will only match a member function of QWidget that has a single parameter of type QString. The parameter name is not used in the search. Change-Id: I8a31c9a7ed632f12a0e6d8a33cbb5cd361098317 Task-number: QTBUG-47286 Reviewed-by: Martin Smith <martin.smith@digia.com>
* | | | Add a dedicated QListData::realloc_grow for growing QListThiago Macieira2015-08-102-3/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This hides the call to ::grow to now two places in the source code, so it will be easier to fix the inefficient call to qAllocMore. Change-Id: I5d1e6f7607404caa96e4ffff13e80a3e4cb0ee93 Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com> Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
* | | | Merge remote-tracking branch 'origin/5.5' into devFrederik Gladhorn2015-08-067-35/+50
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: doc/global/qt-cpp-defines.qdocconf src/3rdparty/forkfd/forkfd.c src/corelib/codecs/qtextcodec.cpp src/corelib/kernel/qmetatype.cpp src/corelib/tools/qset.qdoc src/gui/accessible/qaccessible.cpp src/gui/image/qpixmapcache.cpp src/opengl/qgl.cpp src/tools/qdoc/generator.cpp src/widgets/kernel/qwidget.cpp tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp Change-Id: I4fbe1fa756a54c6843aa75f4ef70a1069ba7b085
| * | | Don't check if Pentium's CPUID leaf 1 existsThiago Macieira2015-08-061-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It does. When CPUID was introduced in late 486, it already supported leaf 1. That means all Pentium-class systems (including Intel's new Quark systems) have CPUID and they have at least leaf 1. Change-Id: Ib306f8f647014b399b87ffff13f1d5d2530d9ddd Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | | Doc:added doc to undocumented functionsNico Vertriest2015-07-223-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-36985 Change-Id: Ic358682b276d67ef804f727bcf14191718613469 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| * | | QTimeZone: Convert fractional timezones properly.Cesar Garcia Naranjo2015-07-211-6/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtCore][QTimeZone] Fixed a wrong timezone conversion when the POSIX timezone rule contains a fractional timezone (e.g. VET4:30). Task-number: QTBUG-47037 Change-Id: I5d9052929bbcde174614ccf07c329264603e6431 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | | Remove attempt at detecting compile-time HLEThiago Macieira2015-07-202-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's no __HLE__ macro and there won't be, since the HLE prefix can be run on older CPUs. There's no need for runtime detection. Change-Id: Ib306f8f647014b399b87ffff13f1daba0e654b02 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * | | QtCore: Fix const correctness in old style castsThiago Macieira2015-07-202-19/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Found with GCC's -Wcast-qual. Change-Id: Ia0aac2f09e9245339951ffff13c8d4b2920a11fb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | | Don't complain about missing CPU features under ValgrindThiago Macieira2015-07-181-1/+10
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you're running Qt under valgrind, it stands to reason that you know what you're doing. In particular, Valgrind does support AVX and AVX2 instructions, but some versions seem to be missing the necessary CPUID bits. Change-Id: I9a75ad8521ae4e5cbbe5ffff13d1940f6fa5c4f4 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: David Faure <david.faure@kdab.com>
* | | Add a quick optimization for QVersionNumber's constructorsThiago Macieira2015-07-301-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the data fits inline, let's store it using the dummy member. GCC, Clang and ICC optimize the code on all architectures I tested to one single store. Previously, the function for "return QVersionNumber(5,4,0);" was: x86-64: movb $7, (%rdi) movb $5, 1(%rdi) movb $4, 2(%rdi) movb $0, 3(%rdi) x86: movb $7, (%eax) movb $5, 1(%eax) movb $4, 2(%eax) movb $0, 3(%eax) ia64: addl r17 = 7, r0 adds r16 = 1, in0 adds r15 = 2, in0 adds r14 = 3, in0 st1 [in0] = r17 addl r17 = 5, r0 ;; st1 [r16] = r17 addl r16 = 4, r0 ;; st1 [r15] = r16 st1 [r14] = r0 armv7a: mov r1, #7 mov r2, #5 strb r1, [r0] mov r1, #4 strb r2, [r0, #1] mov r2, #0 strb r1, [r0, #2] strb r2, [r0, #3] mips32: li $3,7 # 0x7 sb $3,3($4) li $3,5 # 0x5 sb $3,0($4) li $3,4 # 0x4 sb $3,1($4) sb $0,2($4) mips64: li $3,7 # 0x7 sb $3,7($4) li $3,5 # 0x5 sb $3,0($4) li $3,4 # 0x4 sb $3,1($4) sb $0,2($4) ppc32: li 10,7 stb 10,3(3) li 10,5 stb 10,0(3) li 10,4 stb 10,1(3) li 10,0 stb 10,2(3) ppc64: li 10,7 stb 10,7(3) li 10,5 stb 10,0(3) li 10,4 stb 10,1(3) li 10,0 stb 10,2(3) Now it is: x86-64: movq $263431, (%rdi) x86: movl $263431, (%eax) ia64: addl r14 = 263431, r0 ;; st8 [in0] = r14 armv7a: movw r3, #1287 movt r3, 4 str r3, [r0] mips32: li $3,84148224 # 0x5040000 addiu $3,$3,7 sw $3,0($4) mips64: li $3,321 # 0x141 dsll $3,$3,50 daddiu $3,$3,7 sd $3,0($4) ppc64: lis 9,0x504 sldi 9,9,32 ori 9,9,7 std 9,0(3) ppc32: lis 9,0x504 ori 9,9,7 stw 9,0(3) All assembly listings from GCC 4.8.1, but the Clang and ICC outputs are identical or at least very similar (I tested Clang for ARM, MIPS and PowerPC). Both MIPS and PowerPC were compiled in big-endian mode and this listing shows that the 64-bit implementation is correct. Additionally, the output is also the same for GCC when using brace initialization (that is, return QVersionNumber{5,4,0}). Clang and ICC couldn't optimize that. Change-Id: I9a4a4c9fc83f1182401f63fd2da829c935a8c9da Reviewed-by: Keith Gardner <kreios4004@gmail.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | | Refactor QVersionNumber so it stores values in-classThiago Macieira2015-07-292-21/+205
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The common case of QVersionNumber is that there are few segments and each segment is a small integers. So instead of allocating a QVector<int>, just store those numbers in the class itself if possible. Think of this as a "Small String Optimization" for QVersionNumber. QVector<int> costs 16 + 4*N bytes, plus malloc overhead. After this change, QVersionNumber(5,4,0) will have an overhead of zero. The memory layout is explained in the header. I've coded it so big endian also works, but I have not tested it at all. Aside from the special functions for QVersionNumber and operator>>, all the rest of the algorithm could have been left unchanged. I only updated segments(), normalized(), compare(), commonPrefix() and fromString() to take advantage of the smaller implementation in a more efficient way. Note: QVersionNumber's constructors often leave half of the object or more uninitialized. That's not a problem. Change-Id: I4a2a0ce09fce2580f02d678e2f80b1dba74bac9d Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | | Doc: Increase accuracy of QString documentation discussing size()Topi Reinio2015-07-291-13/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are multiple QString and QStringRef functions that document behavior "if n is greater than size(), ...", but a comprehensive, correct statement is "if n is greater than or equal to size(), ...". Change-Id: I5d2112e08013edaf6f2f6d7e8a6740ea26a076e2 Task-number: QTBUG-47479 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | | Introduce QHash key iteratorsSérgio Martins2015-07-282-1/+175
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So we can have interoperability with algorithms. Motivated by inefficient code like qDeleteAll(hash.keys()) [ChangeLog][QtCore][QHash] Added key iterators, accessible through keyBegin() and keyEnd(). Change-Id: I1f9db8a7a4294e1556cbb50b8fe5ebdcf0dc29a2 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | | Introduce QMap key iteratorsSérgio Martins2015-07-282-4/+178
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So we can have interoperability with algorithms. Motivated by inefficient code like qDeleteAll(map.keys()) [ChangeLog][QtCore][QMap] Added key iterators, accessible through keyBegin() and keyEnd(). Change-Id: Ieee2f9ad031e9d1e845a71447746699bbe95b96c Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | | doc: Corrected docs for QList and QVectorMartin Smith2015-07-272-73/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The docs for QList advised users to choose QList over QVector for efficiency reasons. The advise should be to use QVector over QList for efficiency reasons. This update corrects that misunderstanding. Change-Id: Ie04c99ab7fe6aef4bd1d39175c9564455b0122de Task-number: QTBUG-47196 Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | | QSet/QQueue/QStack: remove docs for removed special member functionsMarc Mutz2015-07-223-59/+0
| | | | | | | | | | | | | | | | | | | | | | | | Commit 5c442321220e9ba7818e2eba4fa22b159b6477ab removed the functions, but not the docs. Change-Id: If12ec8a268cf67c7a62ba4f523360e0c79ce63ca Reviewed-by: Martin Smith <martin.smith@digia.com>
* | | QLocale: mark some private types movable/primitiveMarc Mutz2015-07-221-0/+3
| | | | | | | | | | | | | | | | | | | | | Because they are. Change-Id: I7f0b595fed568becdc33d1705fc8d7e372ec0c9d Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | doc: QTimeZone::OffsetDataList is a QVector, not a QListMarc Mutz2015-07-221-1/+1
| | | | | | | | | | | | | | | Change-Id: Ib5eb635fe267b743b970714c99db8c0abc9ac2c8 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | QStringRef: make nothrow move-assign- and -constructibleMarc Mutz2015-07-221-9/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The move special members were inhibited by the presence of a non-trivial copy constructor/assignment operator and destructor. Restore them. While we're at it, move all the special member functions we should not have defined into an #if QT_VERSION block. Change-Id: I873a99bfefe03e0fb02676e3431fd51f8c8f0adc Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | QRegExp: remove pointless QRegExpCharClass copy special member functionsMarc Mutz2015-07-221-14/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | They do exactly what the compiler-generated ones would do, but their presence inhibits the move special member function from being synthesized. Change-Id: Ib2046dbcee3c21ac3b5087f41d19e2a4a3e0a54f Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | QSharedPointer: make copy assignment from compatible shared pointer use ↵Marc Mutz2015-07-211-14/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | copy-swap ... like all other assignment operators. Removes the last user of internalCopy(). Removed. Change-Id: I15f2cb3b7b26988dd3bc2f4475bc316480476993 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QVector: add an rvalue overload of push_back/appendMarc Mutz2015-07-192-0/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is low-hanging fruit, for two reasons: 1. The implementation is dead-simple (unlike, say, in QList). 2. It's completely transparent to the QVector user (unlike, say, emplace_back, which can only be used inside an ifdef). Change-Id: Iaf750100cf61ced77aa452f0e4e3c4ec36b29639 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | QVector: in append(), if we take a copy, then move, not copy from the copyMarc Mutz2015-07-191-3/+3
| | | | | | | | | | | | | | | | | | | | | Replaces one copy ctor / assignment with a move ctor / assignment. Change-Id: I56768db9904283a9be7c87f624a557a64557bc8f Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | | QArrayDataPointer: make move semantics consistent with other containersMarc Mutz2015-07-191-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That is: - nothrow default constructor - nothrow move constructor - nothrow move assignment operator - nothrow swap - as a generic container, destroy lhs contents immediately on move-assignment. Change-Id: I6ec2b9451d3a0ddb63a97ea84504bc7f87d8d34d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QSet/QQueue/QStack: use compiler-generated special member functionsMarc Mutz2015-07-194-13/+8
| | | | | | | | | | | | | | | | | | | | | | | | They do the right thing (except move special member functions on MSVC, but that's MSVC's problem). Change-Id: I699e1be83c0568821f8c6b84394a2713bb22e8e7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | QSharedPointer: add move construction, assignment from compatible shared ↵Marc Mutz2015-07-191-0/+17
| | | | | | | | | | | | | | | | | | | | | pointers Change-Id: I772c568055c9bed6eb627ad35dba300925fc0fde Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>