summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge dev into 5.5Oswald Buddenhagen2015-02-23355-2919/+5895
|\ | | | | | | Change-Id: Id6dbbbfc542c214fe695c6795c6aaf23aedc1cd1
| * QCoreTextFontEngine: Cache face_id.Robin Burchell2015-02-222-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | This involves a significant amount of memory allocation, which made it rather more expensive than one would expect. The FT engine also caches face id, so this seems like a reasonable prospect. Increases delegates_text by another few ops/frame. Change-Id: If31e6b54478e4caf46a3a12a9ac45254a1f01525 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
| * QDateTime: cache the result of date.timeSpec() in QDebug op<<Marc Mutz2015-02-211-2/+3
| | | | | | | | | | | | | | Saves a couple dozen bytes in text size on optimized AMD64 builds. Change-Id: Iefd9ca05a7b27f240836c1e1e00df569742fcd7f Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * QDateTime: drop quotes in QDebug outputMarc Mutz2015-02-212-2/+3
| | | | | | | | | | | | | | | | | | As requested in review of 1d2efe1f27bedcbaa157ef4e82b8eda33dda46ad. I didn't add a comma in front of the timeSpec() as the other fields aren't separated by commas, either. Change-Id: I54d74b7199ca7e46e28d2ceca22b02205e318c90 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * tst_QNoDebug: don't use sprintf if there're no argumentsMarc Mutz2015-02-211-1/+1
| | | | | | | | | | | | | | | | This slipped in with commit 1d2efe1f27bedcbaa157ef4e82b8eda33dda46ad, but is of course completely bogus (though harmless). Change-Id: If3875b65af0fa3fe85216391599433158043e361 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * Restore binary compatibility in versioned OpenGL function classesDavid Morgan2015-02-212-71/+295
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a partial revert of commit 18aae36a90c0753f1b1e615ba8437d8ebd1bd2fb that restores the removed *Backend classes and restores the ordering of members in other *Backend classes. This restores binary compatibility for QtGui. tst_bic now reports only that some of the *Backend classes have changed size. This is a false positive as all such cases have added new members at the end of the respective classes. Offsets to pre-existing members are still consistent with earlier versions. Change-Id: Ia7f651870c2dea7f1a8d3611e667151387506dc8 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * Linux/XCB: added a missing arg to QXcbConnection::QXcbConnection callStéphane Chatty2015-02-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | QXcbConnection::QXcbConnection has 3 args now, but in the call for extra X displays it still was used with 2 args. The bug has gone unnoticed so far because of default args and type conversion. Change-Id: I48b60ce6da8edb1e564010d2b4af9ae95da25316 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> Reviewed-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
| * Haiku: Extend QStorageInfo implementationTobias Koenig2015-02-201-2/+25
| | | | | | | | | | | | | | | | | | | | Provide the file system type, the name (label) of the volume and the path to the associated device (if available). Change-Id: I7dd0d314d3f757e0f57c8f82beaf8ee21da86167 Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Haiku: Use 'unknown' as QSysInfo::productType()Tobias Koenig2015-02-201-3/+0
| | | | | | | | | | | | | | | | | | | | | | There are no actual products of Haiku, so using 'unknown' (the default) is fine, otherwise the file platform selector would be '+unix/+haiku/+haiku' instead of '+unix/+haiku'. Change-Id: Id7653098e20374885a50c09e2aaac9e6fcfc6efb Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Haiku: Enable iconv supportTobias Koenig2015-02-201-1/+1
| | | | | | | | | | | | | | | | Fix the linking of the iconv config test on Haiku Change-Id: I7717faf51326a4e3b0f4f6331908a35f1ff0206a Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * Remove BlackBerry PlayBook support.Rafael Roquetto2015-02-2017-494/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reasons: - the PlayBook NDK is old and its compiler does not keep up with newest C++11 improvements inside Qt code. - the PlayBook NDK diverges considerably from the standard BB10 NDK, making it non-trivial to keep a common codebase. - It's a defunct platform. - Maintenance time is limited. [ChangeLog][Platform Specific Changes] Removed BlackBerry PlayBook support. Change-Id: Ia338aff55f4e4b747ebdecb0e1463a369a656c03 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Bernd Weimer <bernd.weimer@pelagicore.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
| * Don't deploy networkmanager/connman/generic bearer on AndroidAlex Blasche2015-02-201-1/+1
| | | | | | | | | | | | | | Android has its own plugin for bearer management Change-Id: I85c40ef7ae9ac5f9509123db11fe6f3d7a71604b Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
| * Fix warning-as-error about member not used with Clang 3.6Thiago Macieira2015-02-201-1/+1
| | | | | | | | | | | | | | | | Found by Clang 3.6 on Linux: qxcbeglcontext.h:91:21: error: private field 'm_connection' is not used [-Werror,-Wunused-private-field] Change-Id: I1a800c709d3543699131ffff13c2fcf8cf013175 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * Do not attempt to unregister an unregistered dbus serviceAllan Sandfeld Jensen2015-02-202-2/+6
| | | | | | | | | | | | | | | | | | | | | | If a QSystemTrayIcon is created but never shown, it will trigger a warning on exit when it fails to unregister. This patch ensures we only try to unregister if the service was registered in the first place. Change-Id: I0e245d19be55c58aea180dbcbe5215e738d05280 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * Fix typo: properly write endianness.Lisandro Damián Nicanor Pérez Meyer2015-02-201-1/+1
| | | | | | | | | | | | | | Change-Id: I5240f6eef0eef85cbc6a9107f047f36e97b9a060 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com> Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
| * xcb: remove stray QDBusMenuConnection in QXcbNativeInterfaceShawn Rutledge2015-02-202-3/+1
| | | | | | | | | | | | | | | | | | It was unintentionally left in from an earlier version of 38abd653774aa0b3c5cdfd9a8b78619605230726 Change-Id: I7b0b19ed313493562874642cae8865bb0783e366 Reviewed-by: Daniel Molkentin <daniel@molkentin.de> Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
| * D-Bus system tray: properly check whether StatusNotifierHost availableShawn Rutledge2015-02-204-13/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "org.kde.StatusNotifierWatcher" is just a watcher/helper, whereas the actual systray object is "org.kde.StatusNotifierHost-$PID". The org.kde.StatusNotifierWatcher.IsStatusNotifierHostRegistered property can tell us whether there is an actual system tray. Also renamed the accessor to isStatusNotifierHostRegistered since we are checking for the host, and also because it can be confusing that it's a member of QDBusMenuConnection if the name isn't clear. See also KDE bug 339707 Change-Id: I218c5357b9cc5a62e5cc07abe980893b826f98f4 Reviewed-by: Martin Klapetek <mklapetek@kde.org> Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com> Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
| * Android: availableTimeZoneIds returns QList not QSetShawn Rutledge2015-02-200-0/+0
| | | | | | | | | | | | | | | | Fixes error: invalid covariant return type Change-Id: I5b5fead1b48c2502ae40bc9cd181939444ff715a Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com> Reviewed-by: BogDan Vatra <bogdan@kde.org>
| * qdoc: Support documentation of JavaScriptMartin Smith2015-02-2022-941/+1022
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This update provides the actual support for documenting JavaScript. It has been tested with JavaScript commands in qdoc comments in .qdoc files but not in .js files. Currently, we have the use case of needing to document JavaScript using qdoc comments in .qdoc files. For each qdoc command for QML, i.e. \qmltype, \qmlproperty, etc, there is now a corresponding JavaScript command, i.e. \jstype, \jsproperty, etc. Some of these might not be needed, but they are all provided. Briefly, document JavaScript in a .qdoc file the same way you would document QML in a .qdoc file, but instead of using the \qmlxxx commands, use \jsxxx commands. Change-Id: Ib68a5f66c16472af87d9f776db162332ca13fbb7 Task-number: QTBUG-43715 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| * qdoc: Mark Genus of each Node objectMartin Smith2015-02-204-29/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The concept of Genus was introduced to allow link commands (\l) to specify what kind of entity should be accepted as the link target. Possible values were CPP, QML, DOC, and DONTCARE. This became necessary when we started seeing more cases where the same name was used for a C++ class and a QML type. The Genus for an entity was returned by a member function of the specific subclass of Node that represents that entity. For example, QmlTypeNode::genus() returns QML, while Class::genus() returns CPP. Now we are seeing an increasing need to document Javascript. Rather than add subclasses of all the QmlXxxNode classes to represent the javascript entities, the Qml Node subclasses will be used. JS is added to the Genus enum to mark Nodes that represent javascript entities. But this requires storing the Genus value in the node, rather than just having a member function in each subclass return it. Now there are two member functions in the Node base class, genus() and setGenus(), and the value is stored in the Node. This doesn't increase the size, because there was a byte available. Change-Id: Ifcee78595f4288792e09bb255d2e8c01ebafac46 Task-number: QTBUG-43715 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| * Fix compilation on AndroidMichal Klocek2015-02-202-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | Commit 81a45e1f13fdf56129aed952a6e3479e16c14a2c replaced QSets with QLists in QTimeZone, but forgot to adapt the Android code. This commit fixes it. Change-Id: I8704a39c44a9dc74147a4bb99a6f5d1bea53afa1 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
| * qdoc: Let qdoc ignore Q_ENUM and Q_FLAGMartin Smith2015-02-201-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Q_ENUM and Q_FLAG were not listed in the Cpp.ignoredirectives variable in qt-cpp-defines.qdocconf. This never used to cause parsing errors in qdoc, but now it does. The cause for this change was not determined at the time of this fix, which is to add Q_ENUM and Q_FLAG to the ignore directives list. Change-Id: I717c9101f7706097869f23b53eeca8cb1a0fee0a Task-number: QTBUG-44510 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * Disable constexpr support for QNXSean Harmer2015-02-201-0/+5
| | | | | | | | | | | | | | | | | | Even though the compiler on QNX supports C++11, the stdlib it ships with is missing constexpr on many important functions. This is required to make qtbase compile on QNX 6.6. Change-Id: I59a4263483b1d94b9d2dceb947876e445f9662af Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
| * qdoc: Omit output subdirectory from paths written to .qhpTopi Reinio2015-02-201-15/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When writing the help project file, all the files can be assumed to be in the same subdirectory, defined by the qhp virtualFolder variable in the documentation config. Since commit 77165553, the output subdirectory is stored for each documentation node, which caused the subdir to be written to paths in .qhp as well. The result was duplication of the subdir in paths passed to Assistant, giving page not found errors. Change-Id: I69fd74874f9d8eac6957287941193917728476fd Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
| * qdoc: Reduce size of Node classMartin Smith2015-02-202-41/+41
| | | | | | | | | | | | | | | | | | | | The Node class represents every entity to be documented. By changing some of its data members from enum to uchar, it's size has been reduced from 176 bytes to 160 bytes. Change-Id: Idd43866a435f1b0f1ac932870597631b5bbde523 Task-number: QTBUG-43715 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Use qrc for test data in QFileInfo test on all platformsEskil Abrahamsen Blomfeldt2015-02-183-36/+14
| | | | | | | | | | | | | | | | | | | | | | | | To make the test compatible with cross-compilation, we need to bundle test data in qrc, and then extract files to the file system during initialization. We did this for Android before, but the change is required on many platforms and since it will also work on desktop platforms, we consistently just do it this way everywhere. Change-Id: I7f65bd9e1dd6f217e6adffda44a40da7599cfe72 Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
| * Doc: Fix QTextStream::readLine() snippetAlexander Volkov2015-02-181-3/+3
| | | | | | | | | | | | | | | | | | The old snippet is incomplete because it misses an extra check in the loop body that the line is not null. Use the new readLine() overload to keep it simple. Change-Id: Ie9f13291ca6ff6f546b81f100ce58d747f0dd12f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * Testlib: Add function to extract files from resources to diskRainer Keller2015-02-182-0/+58
| | | | | | | | | | Change-Id: I7ae1cdfea751a759298cf277e36cfef7a9c46edb Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
| * QDate/QTime: mark some functions constexprMarc Mutz2015-02-171-27/+27
| | | | | | | | | | Change-Id: Icbac388337d561f61a9a53163c3ddfc748935a2f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Haiku: Initial version of QPA plugin for HaikuTobias Koenig2015-02-1729-0/+2714
| | | | | | | | | | | | Change-Id: Ib4d1d75a11602af8423970e12c7cc594576e1c4d Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
| * xcb: Check for the presence of XInput 2.2 before selecting touch eventsAlexander Volkov2015-02-172-18/+24
| | | | | | | | | | | | Change-Id: I5309f9cdaadb87e0a577a0701d2c100d29525424 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * Fixed license headersJani Heikkinen2015-02-17204-204/+204
| | | | | | | | | | Change-Id: Ibebe1318d1c2de97601aa07269705c87737083ee Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * support spaces in build and install dirsOswald Buddenhagen2015-02-179-31/+39
| | | | | | | | | | | | | | | | spaces in the source dir are not supported for now, as that requires some more profound refactoring of the bootstrap makefiles. Change-Id: Ie0c07a1558b8326f642f2ea144bc1cd85ee761af Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * use relative paths for build dir referencesOswald Buddenhagen2015-02-172-5/+5
| | | | | | | | | | | | | | | | apart from being more readable, it has the side effect of being resistant to spaces in the build path. Change-Id: Id12603c3a96765913e747fba4070d49de0705315 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * remove nonsensical path strippingOswald Buddenhagen2015-02-171-1/+1
| | | | | | | | | | | | | | we strip the path a few lines above already. Change-Id: If7524b8e744d2f1ab2f5a6920097d25671449829 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * untangle handling extra compiler .clean memberOswald Buddenhagen2015-02-171-13/+17
| | | | | | | | | | | | | | | | | | it's easy when it is a simple list of files (or just absent). however, it can also contain expandos, and in this case it's definitely not a good idea to treat it partly (but not really) as a single shell command. Change-Id: I7ef32a56f276b06579fc7094357c5f7612eaf205 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * fix fixPathToTargetOS() nestingOswald Buddenhagen2015-02-171-2/+2
| | | | | | | | | | | | | | first replaceExtraCompilerVariables(..., NoShell), then fix the final result. Change-Id: If8cebeaa59f48d91b33b5a74e6a48a0d2d049643 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * remove pointless fixPathToTargetOS() callsOswald Buddenhagen2015-02-175-19/+13
| | | | | | | | | | | | | | | | | | | | it makes no sense to call it on paths that are fixified right before or after, as fileFixify() calls it itself. and verifyExtraCompiler() calls normalizePath() on its file argument. Change-Id: I8fb21e129fd29428d1855de73483087842bc1bdd Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * replace incorrect uses of fixPathToLocalOS() (mostly)Oswald Buddenhagen2015-02-1710-67/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in most cases, it actually means normalizePath() (because the file name is used with qt i/o functions afterwards). this affects QMakeLocalFile::local() as well, so many not immediately obvious places are affected as well. there was also one case of fixPathToTargetOS() falling into this category. this is mostly a no-op, as the qt functions are agnostic to the path separator. in some other cases (in particular in the vcproj generator), it actually means fixPathToTargetOS(). this is mostly a no-op as well, as the two functions are equal except on msys anyway. in the <meta file>FileName() functions, the use of a fixPath*() function is bogus in the first place - fileFixify() already does fixPathToTargetOS(), and this is correct when the file name is used verbatim in a make command (which it is). otherwise it's irrelevant. Change-Id: I26712da8f888c704f8b7f42dbe24c941b6ad031d Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * more autotests for spaces, destdirs and library linkingOswald Buddenhagen2015-02-1712-37/+56
| | | | | | | | | | Change-Id: Ie106d1151e61a50081bccea0a6d0d70728451a5b Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * remove pointless path trimmingOswald Buddenhagen2015-02-171-1/+1
| | | | | | | | | | | | | | | | there is no reason why there should be unexpected leading or trailing whitespace in an extra compiler's .depends list. Change-Id: I46be75063180131e135fc6eea0238a482073618a Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * fix quoting issues. all of them. (*)Oswald Buddenhagen2015-02-1715-476/+514
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | instead of quoting more or less random variable contents early, consistently quote everything only right before it is needed. this way we can be sure that everything is correctly quoted, but not over-quoted. this removed the need for the insanity that unescapeFilePath() and similar ad-hoc contraptions were. this had the somewhat counter-intuitive effect that it was possible to remove escapeFilePath() calls from PBX::writeSettings() calls - these were actually only unescaping. [ChangeLog][qmake][Important Behavior Changes] A lot of quoting issues have been fixed. As a side effect, qmake has become more sensitive to over-quoted file names in project files. (*) ok, maybe not. close enough. Task-number: fatal: out of memory Change-Id: I8c51cfffb59ccd156b46bd5c56754c480667443a Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * fix filename handling in replaceExtraCompilerVariables()Oswald Buddenhagen2015-02-177-68/+89
| | | | | | | | | | | | | | | | | | | | | | fixing and escaping is now a tri-state option: - none (this removes the need to unescape the result right afterwards in some cases) - local shell (for system()) - target shell (for Makefile) Change-Id: I5b78d9b70630fe4484dc964eff5f62793da35764 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
| * Use relative path for QMAKE_BUNDLE_DATAFawzi Mohamed2015-02-171-1/+1
| | | | | | | | | | | | | | | | | | | | Use of FileFixifyAbsolute with non-default in_dir and out_dir is not defined (and produces bogus results). Using FileFixifyRelative when handling QMAKE_BUNDLE_DATA as a relative path is fine. Change-Id: I49902dc9f5b8029d092a4419c0cff5483e419c30 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * compose: Rename main.cpp to qcomposeplatforminputcontextmain.cpphjk2015-02-172-2/+2
| | | | | | | | | | | | | | | | Files with same base name cause extra trouble for debuggers. Similarly to 26cf0f0d5a8, it can be avoided here. Change-Id: Ide47170f417d636aa031b0d84a1951df8bf32316 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
| * Android: Fix tst_QFileInfo::isExecutable()Eskil Abrahamsen Blomfeldt2015-02-171-1/+5
| | | | | | | | | | | | | | Use correct path for executable file. Change-Id: I50283fc43fe6561cb8eb687f739f21a3d5cbadbd Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
| * QPair: add noexcept to ctors and assignment operatorsMarc Mutz2015-02-171-3/+12
| | | | | | | | | | Change-Id: Id201d1f1e7a087083ca6c13ab31c721e672ef566 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * QList: share implementation of operator== with QVector where possibleMarc Mutz2015-02-171-0/+17
| | | | | | | | | | | | | | Same change as was already applied for count() and contains(). Change-Id: Ibd62e4b36e03741993ba33e730c9449ef19bff5f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * QList: share the implementations of contains()/count() with QVector where ↵Marc Mutz2015-02-171-0/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | possible If QList data-layout-compatible with QVector and a C array, implement count() via std::count() and contains() via std::find() and use const_pointer instead of const_iterator as the iterators. This essentially makes the QVector and QList implementations identical to each other, at least for important cases such as QString. To switch between the different implementations, use tag dispatching instead of the previously used technique "use 'if' as if it were 'static if'", which imposes accidental requirements on the element types (something that esp. QVector is plagued with). Change-Id: I6caf74442a22059676b5bf115a6089768f3a0952 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * QList: prepare for tag dispatching based on memory layoutMarc Mutz2015-02-172-0/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | Add one tag class for each of QList's three different memory layouts to QListData, and inherit QList<T>::MemoryLayout from exactly one of them. To simplify overloading, added tag classes that express the negation of the two extreme poles of memory layout (C-compatible and heap), too. The "missing" one could be added when needed, too. Change-Id: I45ea603731499fd3fdfb37d60a0a98fb22ac15ec Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>