summaryrefslogtreecommitdiffstats
path: root/src/corelib
Commit message (Collapse)AuthorAgeFilesLines
* QString: avoid a QLocale detach in vsprintfMarc Mutz2013-09-201-1/+1
| | | | | | | | | | | | | | | | I didn't dig deeper to check where the additional reference came from, but tracing confirmed that the QSharedDataPointer<QLocalePrivate>::detach() call is gone with this change. Background: QString::vsprintf is used in the logging framework, and as such shouldn't waste any memory. It's currently anyway unusable from, say, signal handlers, but this is low-hanging fruit that shaves off one of the dozen or so memory allocations involved in a simple qFatal() call. Change-Id: I19fa2148f669dfc7b5f276221151e25a4348cbfe Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* WinRT: QLibrary & plugin supportAndrew Knight2013-09-202-1/+19
| | | | | | | | | | | | Avoid unsupported Win32 API while providing alternative codepaths for in-package library loading. Change-Id: Iaad059d6c94d0347cbaa8d9b9240806afcb29561 Done-with: Andrew Knight Done-with: Kamil Trzcinski Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* QT_NO_PROCESS for WinRTOliver Wolff2013-09-202-12/+19
| | | | | | | | | | | As Windows Runtime does not really support the use of spawning processes QT_NO_PROCESS is defined for winrt builds and the corresponding sources are excluded from build. Change-Id: I79263417c985b23678c55ac44a5591a9a69d3c13 Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* WinRT: Compile fix for qelapsedtimer_win.cppOliver Wolff2013-09-201-0/+5
| | | | | | Change-Id: I1c9d6904eecd499ca8c2b744e8ac60696f40c20f Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* WinRT: Shared memory supportAndrew Knight2013-09-201-3/+27
| | | | | | | | | | WinRT supports in-memory file mapping via CreateFileMappingFromApp. This is unimplemented on Windows Phone. Change-Id: Ic5692e501cd2fe9e1337829bdeb933fccc804abe Done-with: Andrew Knight Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fixed compilation of QSystemsemaphore for WinRTKamil Trzcinski2013-09-201-0/+8
| | | | | | | | | | | As CreateSemaphore and WaitForSingleObject are not supported on WinRT their supported alternatives are used. Change-Id: I1aa20076e286ed8ae28ba332bbed41ff8ce0feff Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* WinRT: Basic global supportAndrew Knight2013-09-209-17/+62
| | | | | | | | Various global changes, primarily preprocessor flow, to support the WinRT platform. Change-Id: I3fa9cf91d5fb24019362e88fcf205e31b4f810b5 Reviewed-by: Andrew Knight <andrew.knight@digia.com>
* MetaType: de-inline the container iterables.Stephen Kelly2013-09-202-225/+400
| | | | | | | | This means the *Iterables and corresponding const_iterators need to be exported. Change-Id: Ic93283616bda96e0d7752b0e881bf0230a5c2146 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Add support for baseline alignmentJan Arve Saether2013-09-202-2/+8
| | | | | | | | This is a prerequisite for baseline support in Qt Quick Layouts Change-Id: I1f032106cd1e7248a7688b6b9ca59f062a596d49 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Change QT_FILE_SELECTORS to be comma separatedAlan Alpert2013-09-201-5/+1
| | | | | | | | | | It is not full paths being used, so switching to comma does not require different environment variables per platform nor does it appear to be platform dependent. Change-Id: I219517d740fa7385e923a9e09cb7e241378f85ba Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: David Faure <david.faure@kdab.com>
* Android: Add private API for jni in QtCoreChristian Strømme2013-09-203-3/+2374
| | | | | | | | | | | | | | | | | When interfacing with Java API's on Android we need to write code using the Java Native Interface (JNI). Writing JNI code requires a lot of boilerplate code to be written. This patch contains API's to minimize the amount of work needed to write JNI code. QJNIEnvironmentPrivate: On creation QJNIEnvironmentPrivate will attach the current running thread to the Java VM, and expose the java environment. QJNIObjectPrivate: Wrapps around a Java class enabling the user to access the class from C++. Change-Id: Ib633437ae36ff513d934292e9eeefcdd5b757d29 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Android: Added JNI_OnLoad to QtCoreChristian Strømme2013-09-204-0/+242
| | | | | | | | | | JNI_OnLoad is called for each library during the start-up of a Qt application on Android. When the JNI_OnLoad is called we can get a handle to the Java VM and necessary classes which enables us to access Java API's in QtCore. Change-Id: I64c1f1106cc0d5ab5a7bc9b22c752c09162fe813 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Revert 15da0a5af20fe6771bcb94ef8d46edbd5c8fb64c.Mitch Curtis2013-09-191-15/+14
| | | | | | | | | | It apparently breaks users' applications. Task-number: QTBUG-33487 Change-Id: Iaeceb3a02b5c7b9ab839c14693aaffcdf9394bc6 Reviewed-by: John Layt <jlayt@kde.org> Reviewed-by: hjk <hjk121@nokiamail.com>
* MetaType: Add assignment operator to the container iterators.Stephen Kelly2013-09-192-0/+28
| | | | | Change-Id: Ib4f2197a0ab6bd41c91de667cd3087fb40e44097 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* MetaType: Fix memory leak of QAtomicInt.Stephen Kelly2013-09-171-0/+2
| | | | | Change-Id: I04c87c4caeb96c820c4d332a803cb2824fea5891 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* MetaType: Fix operator{++,--}(int) with the type-erased const_iterators.Stephen Kelly2013-09-171-4/+4
| | | | | | | | | | Similar to commit 8b062418 (MetaType: Fix operator{+,-}(int) with the type-erased const_iterators., 2013-09-11), explicitly create a copy of the iterator and intialise it. Change-Id: I8b9edef40ca00c826f72768cba4a0992e55371f8 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QMap: don't dereference nullptr IIMarc Mutz2013-09-171-4/+4
| | | | | | | | | | | | | | | | | | | | | root(), leftNode() and rightNode() can be nullptr. These pieces of code happened to work because the first thing lowerBound() does is Node *n = this; // ... while (n) // ... But that is _after_ dereferencing nullptr, which is undefined behavior. So, check first, then deref. This is the completion of I9137bf6e21014cd68404a7e49a748910b1d768cf: all uses of root(), leftNode() and rightNode() have now been manually checked. Change-Id: I3fcb958af9362104f94d6eea9c62da2ae07f1d5e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QMap: don't dereference nullptrMarc Mutz2013-09-171-5/+7
| | | | | | | | | | | | | | | | | | root(), leftNode() and rightNode() can be nullptr. These pieces of code happened to work because the first thing lowerBound() does is Node *n = this; // ... while (n) // ... But that is _after_ dereferencing nullptr, which is undefined behavior. So, check first, then deref. Change-Id: I9137bf6e21014cd68404a7e49a748910b1d768cf Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix name of argument in documentationKai Koehne2013-09-171-1/+1
| | | | | Change-Id: Ia137f75865390f4bbabd65c75ba81ac4bba93eba Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Fix the C++11 and GCC-atomic intrinsics when not using GCCThiago Macieira2013-09-172-38/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both Clang and ICC complain about the use of those atomics when used with a forward-declared pointee. GCC doesn't, which makes me think it's a GCC bug. When using QBasicAtomicPointer<Foo> with these atomics, the _q_value member causes the instantiation of QAtomicOps<Foo>, which causes the instantiation of the regular member function QAtomicOps<Foo>::fetchAndAddRelaxed. The problem is that function takes a QAtomicAdditiveType<Foo>::AdditiveT as parameter, which requires sizeof(Foo). Clang 3.3 and ICC 14 correctly expand and complain. GCC 4.7-4.9 apparently don't. The fix is to apply the same trick we used for the other atomics: change all ops functions (including fetchAndAddRelaxed) to be member templates. That way, they can't be expanded until the actual use. Clang errors: qgenericatomic.h:73:33: error: invalid application of 'sizeof' to an incomplete type 'QMutexData' qatomic_gcc.h:136:48: note: in instantiation of template class 'QAtomicAdditiveType<QMutexData *>' requested here qbasicatomic.h:272:22: note: in instantiation of template class 'QAtomicOps<QMutexData *>' requested here ICC errors: qgenericatomic.h(73): error: incomplete type is not allowed detected during: instantiation of class "QAtomicAdditiveType<T *> [with T=QMutexData]" at line 111 of "qatomic_cxx11.h" instantiation of class "QAtomicOps<T> [with T=QMutexData *]" at line 272 of "qbasicatomic.h" Found-by: Tor Arne Change-Id: I9b10648cd47109a943b34a4c9926d77cd0c4fe12 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QObject: allow connecting to functors with a receiver objectDario Freddi2013-09-164-32/+127
| | | | | | | | | | | | | | | | | | | | | | | Up to now, it was only possible to connect to functors in a direct way, without being capable of using Qt::ConnectionType. This patch allows for specifying a receiver for Functors and function pointers, hence making it possible to specify effectively the connection type. To do this properly, it was needed to add an enum in FunctionPointer representing whether the considered function is a member function or not, to reduce ambiguity upon overloaded calls. Moreover, now senders are checked for the existence of a slot obj as well. This way, should the context be freed, the slot obj and the functor contained in it will be freed as well. On a side note, connecting to a static slot (like QCoreApplication::quit) specifying the receiver object is now compiling. Change-Id: I46474099413b1dc6ca4db9934191d469baeef070 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Don't use ARMv5/6/7 atomics on 64-bit ARM, as they are AArch32 specificTor Arne Vestbø2013-09-161-3/+3
| | | | | Change-Id: I0c359e62a8cbf560691019187f316561bddbee52 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Don't use Mac OS X QCollator backend on iOSTor Arne Vestbø2013-09-163-4/+4
| | | | | | | | | We don't have CoreServices on iOS, which hosts the UC* APIs. Change-Id: I95b1b173e57665c2fc2cdc1701f8ad57cdc0e567 Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Add support for ARMv8/ARM64 to qprocessordetection.hTor Arne Vestbø2013-09-161-3/+13
| | | | | | | As used by the upcoming iPhone 5S' A7 SoC. Change-Id: I276dc739c2565bce23fb1a12c9470dcd311e67ba Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTime: fix unused function warning on non-WindowsMarc Mutz2013-09-161-1/+1
| | | | | Change-Id: I8fbf1f8b0ebfdf58cd72c724326227dc1610e746 Reviewed-by: John Layt <jlayt@kde.org>
* Add QFileSelector APIAlan Alpert2013-09-164-2/+544
| | | | | | | | | | | | | For easy cross-platform and cross-device UIs, automatic asset swapping based on filename is being developed. This API provides the logic for the swapping, so that applications can use it themselves with the same logic as any automatic swapping done in application templates. Selector set is initially minimal, aiming for just platform selection and enabling a common selection mechanism for Qt platforms to use. Change-Id: I219517d740fa7385e923a9e09cb7e241378f857a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix spelling in Q_STATIC_ASSERT in qobject_castOlivier Goffart2013-09-161-2/+2
| | | | | Change-Id: Ibc2b1296bf7eb20e41c1af044797a9a026bed369 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Implement windowsErrorString for WinRTOliver Wolff2013-09-161-0/+12
| | | | | | | | | FORMAT_MESSAGE_ALLOCATE_BUFFER isn't available for WinRT Change-Id: Ib9cf2a11a4e84f3ff010665bd53b4ffb0d0bfcce Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* qelapsedtimer for WinRTOliver Wolff2013-09-151-1/+7
| | | | | Change-Id: Ic31fa667bdc746776d8e29564ea8a1ba6e7384f3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Revert "Reimplement qBinaryFind in terms of std::lower_bound"Giuseppe D'Angelo2013-09-141-3/+2
| | | | | | | | | | | | | | After a bit of discussion, we should actually deprecate qBinaryFind too. This puts the old code back (to avoid behavior changes / source breaks). This reverts commit 23d7f6ee5dea3dd9f47f4ab538b25dc0ffe3df92. Task-number: QTBUG-33473 Change-Id: I7f7d25171e14061e51543c501c30a7b6b184a8fd Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Use Q_STATIC_ASSERT to report error about missing Q_OBJECTOlivier Goffart2013-09-145-13/+34
| | | | | | | | | | Q_STATIC_ASSERT gives better error with C++11 enabled. Aslo the qt_check_for_QOBJECT_macro had warning on some compiler since it used null reference Change-Id: Ic6115da800064b00c50a5762f0b79f5f656bf750 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Do 64-bit loops in QBitArray::count(bool)Thiago Macieira2013-09-141-1/+6
| | | | | | | | | | | On 64-bit platforms, with unaligned loads, this is defintely an improvement since we can run fewer instructions. On 32-bit platforms with unaligned loads, we'll do the exact same number of loads. On platforms without unaligned loads, it's no worse. Change-Id: Idd5dd5213975d77bbc3adf486adbf6f8ef071341 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Let the compiler do the unaligned loads in QBitArray::count(bool)Thiago Macieira2013-09-141-2/+21
| | | | | | | | | | | For platforms where the CPU can do unaligned loads on its own, like x86, the compiler will generate actual loads. On other CPUs, it will do the byte-by-byte load like we were doing. The compiler cannot generate worse code than our hand-rolled load, so this change can only improve performance. Change-Id: I32a89e64aa64d8af504be6c5a10b04d7573cdb98 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QDateTime - Store Qt::TimeSpec, remove Daylight StatusJohn Layt2013-09-142-102/+116
| | | | | | | | | | | | | | Change storing the spec from QDateTimePrivate::Spec to Qt::TimeSpec. Remove the storage and use of the Daylight Status as it is almost never set or used, and would be inaccurate if the tz were to change. It will be replaced later with proper daylight transition support. This simplifies the code and makes the msecs storage change easier. Change-Id: I78a70905025d7eddf1c2dc6001f6b490e5a2b3b8 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDateTime - Switch to using msecs based functionsJohn Layt2013-09-142-185/+29
| | | | | | | | | | | | | | | | | | | | | | A number of QDateTime functions directly use or modify the data stored in the private, but future changes to store msecs and status make this maintenance more complicated. Where possible simplify this code to use the standard msecs functions, standard constructors, or public api instead. This greatly simplifies the functions and the following msecs storage code changes. This is an intermim step towards storing the time in msecs. Some functions will be slower as a result of this change, optimization will take place after all the msecs changes are completed. Note this also removes a test that used valid QDates outside the range of msecs, this change in behavior will be documented in the final mscs change. Change-Id: I6ef710f24babc7024091010064082e9be0b5bbfe Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* ICC 13.0 supports atomicsThiago Macieira2013-09-141-0/+1
| | | | | | | See http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler Change-Id: I45ba6aa640f82df4d06fd4412264892bfd58ffc3 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Base64: Implement the "base64url" encoding and the stripping of '='Thiago Macieira2013-09-144-14/+116
| | | | | | | | | The "base64url" encoding is defined in RFC 4648, which is the newest version of Base64. There are also a few situations where the ending '=' is not desired. Change-Id: I9bb9fa55817b57d125189e4e795d6fde97caea6d Reviewed-by: Richard J. Moore <rich@kde.org>
* Whitespace: re-indent the {to,from}Base64 functionsThiago Macieira2013-09-141-44/+52
| | | | | | | | The code must have been copied from somewhere, a sample implementation. Change-Id: Ieb6ac5d69824fe8a3f38710a22beb79ac986e182 Reviewed-by: Richard J. Moore <rich@kde.org>
* Merge "Merge branch 'stable' into dev" into refs/staging/devSergio Ahumada2013-09-144-7/+7
|\
| * Merge branch 'stable' into devSergio Ahumada2013-09-134-7/+7
| |\ | | | | | | | | | | | | | | | | | | | | | Conflicts: src/concurrent/qtconcurrentmedian.h src/corelib/itemmodels/qabstractitemmodel.cpp Change-Id: Iac46a90bbb2958cef7670031a4b59c3becd8538a
| | * Fix the internal QDir sortingGiuseppe D'Angelo2013-09-101-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If two items are equal according to the current sorting criterion, the sorting predicate uses the address of the items to break the tie. The problem is that the items themselves are being moved during the sort; therefore, this will break the Strict Weak Ordering that std::sort requires. For instance, suppose to be sorting case-insensitively the following array: ("b", "a", "A") Simulating a swapped-based sorting can lead to: Array before Evaluated predicate Array after ("b", "a", "A") "a" < "A" (1) ("b", "a", "A") ^ ^ ("b", "a", "A") "b" < "A" (2) ("A", "a", "b") ^ ^ ("A", "a", "b") "A" < "a" (3) (XXXXXXXXXXXXX) ^ ^ (1) True, because of the array ordering (they're equal otherwise) (2) False: swap them (3) True, because of the array ordering (they're equal otherwise) (1) and (3) say that "a" < "A" and "A" < "a", SWO gets violated, leading to undefined behavior. This problem was causing QFileSystemModel autotests failures (cf. [1]) after switching to STL algorithms instead of using qSort. The array to be ordered in that case is ("a", "c", "C"), cf. tst_QFileSystemModel::caseSensitivity. (STL algorithms are much smarter than good ol' quicksort in qSort; if we're ordering on an array which fits in a cache line, they turn to the much faster (~1 robe) insertion sort. Violating SWO with a quick sort usually just gets to a non-sorted container; insertion sort is implementable in ways that rely on SWO, otherwise they will overflow the iterator; cf. Cormen/Leiserson/Rivest and the other literature on the topic.) This commit reverts commit fa5f3a44 (in Qt 4). [1] http://testresults.qt-project.org/ci/QtBase_dev_Integration/build_01749/linux-g++_shadow-build_Ubuntu_11.10_x86/log.txt.gz Change-Id: I5d8ac0d0907675c501717969abee2816b41eca18 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| | * Fix a typo in documentationJędrzej Nowacki2013-09-101-1/+1
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-33408 Change-Id: I84729139ff40ac62b29031eb161761a8205259cc Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
| | * Correct type mismatches sentence in signals and slots documentation.Mitch Curtis2013-09-101-1/+3
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-15994 Change-Id: I19581ae33313de44bcb6e5eb2c06fc9e507ad101 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| | * Doc: Fix copy+paste errors for QAbstractItemModelSze Howe Koh2013-09-081-3/+3
| | | | | | | | | | | | | | | Change-Id: Ia462544cc86870d9870ae1be3b4f9135c9efe45c Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | | QTime - Add public api for get/set msecs since start of dayJohn Layt2013-09-132-2/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add new public api to get and set the number of msecs since the start of the day. Modify QDateTime to use the new msecs api. [ChangeLog][QtCore][QTime] Added new methods fromMSecsSinceStartOfDay() to create a new QTime from an msecs value, and msecsSinceStartOfDay() to return the QTime as the number of msecs since the start of the day. Change-Id: I285b725b883f1f5524fda87ca81bd64ed99fe6f4 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
* | | Add a static QFileInfo::exists(fileName) functionhjk2013-09-133-1/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | This avoids dynamic construction of the private class. According to the benchmark we go from 4,550 to 3,900 instruction reads per iteration. (without change 32629676 the baseline is 5,600) Change-Id: I5df925e30dbd49bdde87173e481820574ce5abe1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Add a note on symlink behavior of QFile::existshjk2013-09-131-0/+3
| | | | | | | | | | | | | | | | | | Change-Id: I41ede0536f1b7093a7cde3d74a5e221df413aeea Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Optimize QBitArray::count(bool)Thiago Macieira2013-09-131-17/+12
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | Ever since 76e0223619da02911d02813961ef631a5e02d826, qPopulationCount was extracted from QBitArray and moved elsewhere. That unfortunately meant that the 24-bit loads are completely useless, since qPopulationCount always operates on 32 bits. Instead, do a full loop on 32-bit and then do 16-bit and finally 8-bit (for which there are qPopulationCount overloads). Change-Id: If945609f075095257d12877c39434909ac190e54 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | MetaType: Fix operator{+,-}(int) with the type-erased const_iterators.Stephen Kelly2013-09-132-4/+32
| | | | | | | | | | | | | | | | Make sure we don't modify the lhs. Instead copy it and advance the copy. Change-Id: I3440e8e175bfc299f8f83b816faca54fa3f79e43 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Remove some unneeded constructors.Stephen Kelly2013-09-131-11/+3
| | | | | | | | | | Change-Id: I34f86960dc0cfaada509957bca5466b2765e8239 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>