summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools
Commit message (Collapse)AuthorAgeFilesLines
* QString::vasprintf(): Use quintptr when casting pointer for %p.Friedemann Kleint2016-03-091-5/+1
| | | | | | | | | | | | | Previously, the macro Q_OS_WIN64 was checked, causing warnings: tools\qstring.cpp(6183): warning C4311: 'reinterpret_cast': pointer truncation from 'void *' to 'unsigned long' tools\qstring.cpp(6183): warning C4302: 'reinterpret_cast': truncation from 'void *' to 'unsigned long' when compiling WinRT/64bit, where it is not defined. Change-Id: Ib9d8405108c85170aba18b13f9c64083136bc5ee Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QString, QJson, QHash: Fix UBs involving unaligned loadsMarc Mutz2016-03-094-5/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Found by UBSan: src/corelib/tools/qstring.cpp:587:42: runtime error: load of misaligned address 0x2acbf4b7551b for type 'const long long int', which requires 8 byte alignment src/corelib/json/qjson_p.h:405:30: runtime error: store to misaligned address 0x0000019b1e52 for type 'quint64', which requires 8 byte alignment src/corelib/tools/qhash.cpp:116:27: runtime error: load of misaligned address 0x2b8f9ce80e85 for type 'const qlonglong', which requires 8 byte alignment src/corelib/tools/qhash.cpp:133:26: runtime error: load of misaligned address 0x2b8f9ce80e8d for type 'const ushort', which requires 2 byte alignment Fix by memcpy()ing into a local variable. Wrap this trick in template functions in qsimd_p.h. These are marked as always- inline and use __builtin_memcpy() where available in an attempt to avoid the memcpy() function call overhead in debug builds. While this looks prohibitively expensive, from the pov of the C++ abstract machine, it is 100% equivalent, except for the absence of undefined behavior. In one case, the cast produces a local temporary which is then copied into the function, and in the other case, that local variable comes from return value of qUnalignedLoad(). Consequently, GCC compiles these two versions into identical assembler code (only verfied for ucstrncmp, but there's no reason to believe that it wouldn't hold for the other cases, too). Task-number: QTBUG-51651 Change-Id: Ia50d4a1d7580b6f803e0895c9f3d89c7da37840c Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.6.0' into 5.6Liang Qi2016-02-152-2/+2
|\ | | | | | | Change-Id: I0b190005377a23a91da3563428e223b8a3b18333
| * Fix QT_DEPRECATED_SINCE usageJędrzej Nowacki2016-02-022-2/+2
| | | | | | | | | | | | | | | | The deprecation was introduced in 5.6 Change-Id: Ief6b749b40ec75c3c9f904caed8447bfb5ef5439 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | docs: State that QMap::equal_range() returns an open-ended intervalSérgio Martins2016-02-121-1/+1
| | | | | | | | | | | | Change-Id: If31dd078aeb92e479db8c1f0a5e58e56b549b5f6 Reviewed-by: Martin Smith <martin.smith@theqtcompany.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | QLocale: Use QVariant::toStringList() instead of template instantiationSérgio Martins2016-02-101-1/+1
| | | | | | | | | | | | | | | | Avoids (binary) code duplication. Change-Id: I57a23e2f6e151963163d8073b309b3562f8e8684 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Doc: correct minor typoGabriel Pannwitz2016-02-051-2/+2
| | | | | | | | | | Change-Id: If19900309bbef8b65d3dbda4f7795113bfe0678f Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
* | Doc: corrected minor link issuesNico Vertriest2016-02-051-1/+1
| | | | | | | | | | | | Task-number: QTBUG-43810 Change-Id: I98eafe0c7ed55f309640e8495c83ffcef355aa08 Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
* | Make findAmPm actually return the relevant enum, instead of int.Edward Welbourne2016-02-042-13/+11
| | | | | | | | | | | | | | | | The enum needed a name to make that possible, of course. The one overt int return -1 needed to be made explicitly Neither, too. Change-Id: I3930bf03a7ee5e1619a1c74f9ca54faf6a6c5b2f Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* | Disintermediate QDateTimeParser::SectionNode operations.Edward Welbourne2016-02-022-57/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The name, format and maxChange of a Section depend only on the section, not on the details of the currently parsed text it matches; so we don't need the parser object's list of all sections to work them out. Move these methods to the SectionNode and act directly on that instead of going via the section list. Make the name take a Section enum instead of an int. Likewise, make stateName take a State enum instead of an int. Change-Id: Ie340d042ab95aec517013c4dcc30901d40305c78 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* | Make interleaving of QDateTimeParser::Section values evident.Edward Welbourne2016-02-021-11/+12
|/ | | | | | | | | | The actual section members grew up to the internal value, leading to interleaving of subsequently-added values. Change existing enum values to make this go away (class is private, so no BC constraint forbids this). Change-Id: If266b557817eae19d375519bf38268f0f2a0d372 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* Set correct Section type for QDateTimeParser::lastEdward Welbourne2016-01-291-1/+1
| | | | | | | | Setting it to FirstSection was obviously wrong and left LastSection nowhere set ... Change-Id: I26260182e9d986b41b5f3a5d6df94540a5fc116a Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* Don't let a good day cause date-time parser to forget a conflict.Edward Welbourne2016-01-291-2/+4
| | | | | | | | | | | | Setting conflicts to isSet & DaySection cleared it if we hadn't seen the day stipulated, even if there had been a conflict (e.g. over year) before we hit the day-of-week that didn't match the (unset, so defaulting to) 1st of the month. Explicitly test for conflict and only set conflicts (to true) if there is a conflict. Added regression test. Change-Id: I7363eb66a8bb808d341738d14969039834f50db8 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* Refactor one QDateTimeParser::sectionText() via the other.Edward Welbourne2016-01-291-9/+1
| | | | | | | Avoid duplicated code thereby. Change-Id: Icb4e95887e92e8fe8f172329cc383f9e868874a4 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* Make initializers into declare-and-initialize.Edward Welbourne2016-01-291-8/+7
| | | | | | | | Eliminates separate declaration line, makes unambiguous that all are initialized. Change-Id: Ib419a385b38f98070c06428da246d4580b0a0dbc Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* Avoid shadowing in QDateTimeParser::findAmPm.Edward Welbourne2016-01-291-3/+3
| | | | | | | | A parameter was called index; but an inner block re-used that name. Rename the parameter. Change-Id: I2fa18f32aa129c5b1d8de6c4b6571438eeefea14 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* QStringBuilder: fix appending QLatin1String to QByteArrayMarc Mutz2016-01-261-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old code did the equivalent of strcpy(), thus stopping at the first NUL byte, ignoring the QLatin1String's size(). That is not acceptable, for two reasons: 1. Appending QLatin1String to a QString uses the size(), too. 2. The QConcatenable claims an ExactSize = true, so it cannot go and write less data than it's own size() said it would. Even worse, it will happily write _more_ data, too, if the QLatin1String is not properly zero-terminated. This change has low risk, because the equivalent change to the QString branch has been applied between 5.2 and 5.3 (in fd0f1bc3), with no complaints from the user base. It is also in a branch that is very unlikely to be taken: Since QConcatenable<QLatin1String> is setting ConvertTo to QString, any QStringBuilder expression containing it will only implicitly convert to QString, not QByteArray. In fact, I don't even know how to make it invoke the changed code in normal operation... Change-Id: I486a76352af7f318ba05da845d3afee7d826c92a Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* QString: optimize case conversion codeKonstantin Ritt2016-01-211-24/+30
| | | | | | | | | | Handle special case mapping of length 1 explicitly; Skip calculating of high surrogate for the same plane; Optimize branch prediction with Q_LIKELY/Q_UNLIKELY; Replace peekNext() + advance() with just next() in the caller function. Change-Id: I0d37969749bd8ca855321242e6a0e72c405c5f8d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix some mis-guided fall-throughs #ifdef QT_BOOTSTRAPPED.Edward Welbourne2016-01-211-9/+13
| | | | | | | | | | A switch had a case whose body was in a #ifndef; when that got elided, this case fell through into an entirely misguided case. Give the #if a #else clause so that it break;s in the defined case. Code review revealed another, then I searched for more following the same pattern. Change-Id: I57fb59b6c8d349604f3fc6c8b1d424fb3c775d50 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make some initializers be declarations.Edward Welbourne2016-01-201-10/+10
| | | | | | | | | | This shortens an earlier over-long line of declarations and makes visible that these are declare-and-initialize. Change-Id: I39fa9613196c34f7e2b2da04da729324d7f83a55 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* Avoid shadowing a name (and use the outer variable an extra time)Edward Welbourne2016-01-201-3/+3
| | | | | | | | | | | QDateTimeParser::parseFormat()'s top-level scope has a const int max; this was shadowed by a short-lived max in an inner scope; and the outer scope's max could be re-used one more time after that to save re-evaluating the same unchanged expression it held. Change-Id: I9f07452bb0b4e5ff4bcf6396d42d1419de6276fa Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* Avoid dereferencing before the start of a string.Edward Welbourne2016-01-201-1/+1
| | | | | | | | A check for a backslash before a quote neglected to pretest that the quote wasn't the first character in its string. Change-Id: Ib5226836d1111e37bed984938f7c667be59eb1c5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make it clearer what's happening with a fall-through.Edward Welbourne2016-01-201-2/+2
| | | | | | | | | | | | An if () {...}'s close-brace was hiding on the end of a break; line, an idiom used in several places for braces that existed to contain a case (for the sake of local declarations). This made it hard to see that there was an if() whose else was the resulting (commented) fall-through. So put that close-brace on the comment's line and make the comment clearly indicate it's an else. Change-Id: Ie7e7c7063bef96536d6231297b083fc384f2363e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Doc: Fix return type of QWeakPointer assignment operatorsTopi Reinio2016-01-191-3/+3
| | | | | | | | | | | | Imprementation of QWeakPointer assign operators have return types that are references. However, in qsharedpointer.h where separate declarations are held for documentation purposes, the reference qualifiers were missing. This led to incorrect documentation being generated. Task-number: QTBUG-49862 Change-Id: I32727762826feb15a3f4f22446e51d2df16e605f Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
* Haiku: Fix compilation of corelibTobias Koenig2016-01-181-1/+1
| | | | | | Change-Id: I8f962ac7ee85af50a573a451f54931d6c0dd67eb Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Correct floordiv() to cope with implementation-defined division.Edward Welbourne2016-01-131-2/+13
| | | | | | | | | | | | Irrelevant once we get to C++11 (so we can revert this in 5.7), but division's rounding direction is implementation defined when either operand is negative [0]. The prior code assumed C++11's truncation (a.k.a. round towards zero), but rounding may be downwards instead. [0] http://en.cppreference.com/w/cpp/language/operator_arithmetic#Multiplicative_operators Change-Id: I2b6b27e1cf629def48b25433e81b9ed8230d8795 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* [Android]: Java uses some deprecated locale codes so account for theseAndy Shaw2016-01-131-0/+7
| | | | | | | | | | There are three deprecated language codes that Java still uses for the locale so we need to account for these inside QLocale by mapping them to the right language. Task-number: QTBUG-49632 Change-Id: Ib66b3f2763e085f7384228f2490b048bb56be259 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Don't pretend we know what DST to use for an offset date.Edward Welbourne2016-01-121-30/+38
| | | | | | | | | | | | | | | | When QDateTime::addDate() and friends sanitize their end-state, they were using the DST status of their start-state (if known) to control it. This lead to misguided results and, in particular, inconsistent results given that a raw-constructed QDateTime comes into being ignorant of its DST, while a .toLocalTime() one knows its DST. Furthermore, the code to do this was triplicated, tricky and poorly explained. So pull it out into a local static function and explain what it's doing, and why, more clearly and only once. Task-number: QTBUG-49008 Change-Id: Ia4bb3c5e9267fff8bb963ea705267998218ed623 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* Revert "QString: preserve embedded NULs when converting from QByteArray"Marc Mutz2016-01-121-9/+9
| | | | | | | | | | | | | | | | | | | | | | This partially reverts commit e486d69133178ccce7c75cf48201ab28efb20e44. It broke too many users, even though all of them deserved to be broken. The new functionality will be provided by differently-named functions, where possible (problem: equality operators). I did not revert the fix for the off-by-one error in tst_qtextdocumentfragment.cpp. I also didn't revert the change in the inequality relational operators, since for all strings s1, s2 and s2' where s2' is s2 truncated at the first NUL, s1 < s2 ⟺ s1 < s2' (since NUL < c for any c != 0), and, trivially, for ≤, >, ≥, too. This does not hold for = and ≠, of course, since "foo\0bar" ≠ "foo". [ChangeLog][Important Behavior Changes][EDITORIAL] Reverted: All conversions from QByteArray to QString now preserve embedded NULs... Change-Id: If4b47048b39ae5be6ed08e6d91809626a67ea7f5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDate: fix calculation of the week number for the last days of 2020Thiago Macieira2016-01-091-1/+1
| | | | | | | | | | Off-by-one error: we should have calculated whether the current year is leap, not the next year. This affected any 53-week leap years. Task-number: QTBUG-50273 Change-Id: I134ce5db2f82468585ffffff14264cb9f12998fd Reviewed-by: Martin Klapetek <mklapetek@kde.org> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* QString: prevent resize() from shedding capacityMarc Mutz2016-01-061-14/+5
| | | | | | | | | | ...even if reserve() hasn't been called before. [ChangeLog][QtCore][QString] resize() will no longer shrink the capacity. That means resize(0) now reliably preserves capacity(). Change-Id: If499a20990bbf3a20553da14e50a42918d310c9f Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Winrt: Show message when command line processing fails/usage should be shownOliver Wolff2016-01-051-2/+8
| | | | | Change-Id: If8f69906beb22f632ccbde92aab5caf914dcb31b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
* Clarify what time-zone "transitions" are.Edward Welbourne2015-12-091-0/+5
| | | | | Change-Id: Idad5b841c3c693e2040ca606894187988615c9b0 Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
* Doc: Circumvented qdoc parsing by removing '!'Nico Vertriest2015-12-091-1/+1
| | | | | | | | | Qdoc gave warning "Cannot link this to anything" Task-number: QTBUG-43810 Change-Id: Id903040ed7b2860a2ec64a52f7fbe8269c6927b0 Reviewed-by: Martin Smith <martin.smith@theqtcompany.com> Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
* QString: where possible, re-use existing capacity in op(QChar/QL1S)Marc Mutz2015-12-082-7/+22
| | | | | | | | | If the LHS is detached and has existing capacity that is large enough to hold the RHS, re-use the memory instead of allocating a new buffer and throwing away the old. Change-Id: I53d42825da92c264c7301e8e771cba9fb35c321b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix constructing a QSharedPointer<const> of a QEnableSharedFromThis typeThiago Macieira2015-12-081-1/+1
| | | | | | | | | | | | It should compile, since the std::shared_ptr does. [ChangeLog][QtCore][QSharedPointer] Fixed a problem that would cause a compilation error when constructing a QSharedPointer of a const type when the type derives from QEnableSharedFromThis. Task-number: QTBUG-49748 Change-Id: I8de47ed6c7be4847b99bffff141c84f5e0b6bea8 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Don't treat "/etc/localtime" in TZ env var as a valid timezone idMartin Klapetek2015-12-071-0/+7
| | | | | | | | | | | | | On some Debian distros, the TZ environment variable can be set to ":/etc/localtime", which libc defines as "default value". If this is set, the current QTimeZone parsing code will return "/etc/localtime" as the system timezone id, which is clearly wrong. So in that case, just unset the ianaId variable and let the other blocks look for the timezone. Change-Id: I3f5795d0a05f4974a60556387a07a1e2e1e7aa30 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Doc: corrected statement about QByteArray::clearNico Vertriest2015-12-031-2/+2
| | | | | | Task-number: QTBUG-45096 Change-Id: I30a49044690c2f0ef5bf6ee80712e1395c60ac77 Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
* Doc: improvement in if condition about inserting item in listNico Vertriest2015-11-301-2/+2
| | | | | | Task-number: QTBUG-41708 Change-Id: Ibbb115a8ad81f7fba0ce162ae131d4843b19c188 Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
* Document platform limitations for QCollator::ignorePunctuationLars Knoll2015-11-301-0/+2
| | | | | | | | | OS X and iOS do have a flag for this in their API, but it does not seem to work. We can't support this on Linux without ICU. Change-Id: I81613ad425cb054597f23fac112be665f8d958b6 Task-number: QTBUG-41978 Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
* QVector: prevent resize() from shedding capacityMarc Mutz2015-11-282-3/+3
| | | | | | | | | | | | | | ...even if reserve() hasn't been called before. [ChangeLog][QtCore][QVector] resize() will no longer shrink the capacity. That means resize(0) now reliably preserves capacity(). Task-number: QTBUG-39293 Done-with: Robin Burchell <robin.burchell@viroteck.net> Change-Id: Ie7e4e597126832990b6cfb83bba875c3963b143e Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Milian Wolff <milian.wolff@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Detect NEON on AArch64Allan Sandfeld Jensen2015-11-261-1/+5
| | | | | | | | | | | | The __ARM_NEON is the standard define for NEON instructions support __ARM_NEON__ is only legacy, and specifically not defined in AArch64 builds, which causes us not to detect NEON support there. The NEON assembler files doesn't build with AArch64, so the NEON drawhelper methods must be excluded for now. Change-Id: Ie32f855bde94ee7efd8a8ddb7766c931778e729b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Revert "Fix deadlock when setting environment variables."Oliver Wolff2015-11-241-15/+0
| | | | | | | | | | | | | | | | | | | | | | This reverts commit 5b62a5e7aabcc818408f2fe28b9760082f474def. This commit is reverted due to two reasons: 1) It was written incorrectly and does not work as is. The ifdefs should be ifndefs. In its current state, it does the exact opposite of what it is supposed to be doing. 2) There is another environment access inside qsimd.cpp (which checks QT_NO_CPU_FEATURE). This access causes the app to hang. All in all that approach is not sustainable as we might get bitten by environment access again and again. Instead we should use another environment container or use a recursive mutex for WinRT and Windows CE. Task-number: QTBUG-49529 Change-Id: Iaca76404dc1023551a7c25489a609681135765fd Reviewed-by: Andrew Knight <andrew.knight@intopalo.com> Reviewed-by: Samuel Nevala <samuel.nevala@intopalo.com>
* Fix deadlock when setting environment variables.Samuel Nevala2015-11-231-0/+15
| | | | | | | | | | | | | | | | Qt uses QHash as the container for faking environment variables on Windows Runtime and CE. Environment variable manipulation functions are protected by mutex. Accessing the QT_HASH_SEED environment variable inside QHash can lead to situation where qputenv() call leads to qgetenv() call and that leads to a deadlock. Since the application environment is faked anyway, drop support for QT_HASH_SEED and ifdef that functionality out on those platforms. Documentation is updated to reflect changes. Task-number: QTBUG-49529 Change-Id: I1b1c28cb0b041fe2a63ca3dce57068fcb46505a7 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
* winrt: Merge Languages and ManifestLanguages for QLocale::uiLanguagesOliver Wolff2015-11-191-7/+41
| | | | | | | Task-number: QTBUG-48140 Change-Id: I904ad48e7bc48867a362e3f6c5ca1516e55ed872 Reviewed-by: Andrew Knight <andrew.knight@intopalo.com> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
* Fix build with OS X 10.8 SDKThiago Macieira2015-11-181-1/+1
| | | | | | | | | The ffsll function is missing with that SDK, but Clang and GCC support it as the builtin. Change-Id: I9f4d900898814b569c1affff140e15fb59fb45d8 Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch> Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
* QString: Fix in-place toUpper/Lower when there's size expansionThiago Macieira2015-11-182-4/+44
| | | | | | | | | | When that happens, we need to detach (in-place conversion won't work), so we recurse back into the same function, but the template version that does detaching. Task-number: QTBUG-49181 Change-Id: Idba8c29717f34c70a58fffff1412fea3acc95f98 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* make a proper header-only module for QtZlibOswald Buddenhagen2015-11-171-4/+0
| | | | | | | | | | that way other modules can use the headers without hacks. this required making the base directory for paths in headers.pri configurable in syncqt. Change-Id: Id35cfe05bcf4c576d3f2d0d8d09590a5e23d21d3 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
* QChar: Simplify case convertion code with template magicKonstantin Ritt2015-11-161-51/+21
| | | | | | | Same as in QString, though simpler a bit due to fixed-length sequence. Change-Id: Idd6670a7b6415f5d515987c30931d16b73dd280e Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Move CasexTraits from qstring.cpp to qunicodetables_p.hKonstantin Ritt2015-11-162-24/+32
| | | | | | | | and implement TitlecaseTraits as well, to be re-used in the following commit. Change-Id: I5c0bff42fe3b9bc9c2454cc16916cc2be87f604f Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>