summaryrefslogtreecommitdiffstats
path: root/src/corelib/plugin/quuid.h
Commit message (Collapse)AuthorAgeFilesLines
* QUuid: Fix Id128Bytes alignment on some architecturesThiago Macieira2024-01-181-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This partially reverts eb0abd9789062d95bc62dbbc29b2038dc40472b1 so we depend on __SIZEOF_INT128__ in this structure, not on QT_SUPPORTS_INT128 so the Id128Bytes union has a quad-word integer as a member at all times, even in QtBluetooth's removed_api.cpp. That's required because on some ABIs, the presence of this member causes the type to be passed differently, usually in registers (we fixed the stack problem with the alignas(16) in that commit). The "Itanium Software Conventions and Runtime Architecture Guide" did the same back in 2001; section 8.5.1 says integers from 65 to 128 bits are passed "Next Even" and so are aggregates with alignment of 16 bytes. This rule seems to also exist in the AArch64's AAPCS64[1], which says, in rule C.10, that the type should be passed in even registers: C.10 If the argument has an alignment of 16 then the NGRN is rounded up to the next even number. (NGRN = Next General Register Number) It's unclear whether this applies to the union type as a whole or to its individual members. If the latter, then Clang may be buggy. [ChangeLog][Important Binary-Incompatibity Fixes] The QUuid::Id128Bytes type had a loose definition that could cause it be passed incompatibly between functions, in some architectures, depending on whether GNU extensions were allowed. This is now fixed, but may cause code compiled with Qt 6.6.0 and 6.6.1 to fail when recompiled with 6.6.2 or later. [1] https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst#682parameter-passing-rules Fixes: QTBUG-119248 Pick-to: 6.6 6.7 Change-Id: I6e2677aad2ab45759db2fffd17a86a208f788cb7 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QUuid: drop the noexcept of fromBytes()Marc Mutz2023-08-231-3/+2
| | | | | | | | | | | The function has a precondition, namely that [bytes, 16) be a valid range. Therefore it cannot be noexcept. Found in API review. Pick-to: 6.6 Change-Id: Idcc61cdc3b1cbffc20a86b0dbc4eb17e51c1becd Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QUuid: convert bswap(Id128Bytes) to a hidden friend of Id128BytesIvan Solovev2023-08-181-13/+21
| | | | | | | | | | | ... and rename it to qbswap(), thus enabling the endian conversions for Id128bytes via q{To,From}{Little,Big}Endian() functions. Found during Qt 6.6 API Review. Pick-to: 6.6 Change-Id: Ie320cee52ec2b9de0aaa112adec8febb7f5b68a2 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* QUuid: use 'inline' keyword on method declarationsIvan Solovev2023-08-171-6/+7
| | | | | | | | | | | | | | | | Some older compilers used to generate warnings if the 'inline' keyword was used only on method definition, but not on its declaration. It does not seem to be a problem at the moment, but still move the 'inline' keyword from the definition to the declaration of the new QUuid constructor, toBytes(), and fromBytes() methods. Split the fromBytes() declaration, moving the keywords to a separate line, to fit into the 100 characters limit. Found during Qt 6.6 API Review. Pick-to: 6.6 Change-Id: Ic5bd3ad094669cda76592968789cf83e9a72bccd Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Remove QUuid(quint128) constructor againMarc Mutz2023-08-141-13/+12
| | | | | | | | | | | | | | | | | | | | | | This constructor matches way too many argument types (integral, unscoped enums, FP types), so it's likely to cause mayhem, even if left in as an explicit constructor. We now have a named constructor for the same functionality, so just drop the "unnamed" constructor. "Unnamed" constructors are important when emplacement is more efficient than construction + move, or when implicit conversion is required. Neither is the case here: The named as well as the "unnamed" constructors just copy ten bytes around, and the compiler can optimize those extra copies away just fine. Found in API review. Pick-to: 6.6 Change-Id: I7faafd3ebf522fb2b0e450112fb95d643fece5ce Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QUuid: add a named fromUInt128() ctorMarc Mutz2023-08-111-0/+2
| | | | | | | | | | | | | This makes the API symmetric again (fromBytes()/toBytes(), fromString()/toString(), fromUInt128()/toUInt128()), but also gives us the option to remove the QUuid(quint128), should we so choose, because of its overly-broad argument matching range. Found in API review. Pick-to: 6.6 Change-Id: I91bd2450d62ed565ec3b8e46c875f4983bd9dc73 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QUuid: make (quint128) ctor explicitMarc Mutz2023-08-111-1/+1
| | | | | | | | | | | | It matches any integral type, any unscoped enum and any FP type, so we can't allow it to be implicit. In fact, it's probably better to only have a named contructor, fromUint128(). Found in API review. Pick-to: 6.6 Change-Id: I9b250e0b5e74a449b6df4efe3ea38b750c9744ed Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Use QT_SUPPORTS_INT128 macro to handle 128-bit integral typesIvan Solovev2023-08-011-3/+3
| | | | | | | | | | | | | | | | | | | Introduce QT_SUPPORTS_INT128 and QT_NO_INT128 marcos to handle 128-bit types. These macros allow to undef Qt's own 128-bit types and the related code, but keep the compiler definitions unchanged. This is required for Qt Bluetooth, where we need to use QT_BLUETOOTH_REMOVED_SINCE to get rid of the APIs using QtBluetooth-specific struct quint128 which clashes with the 128-bit types. The idea is to use QT_NO_INT128 in Qt Bluetooth's removed_api.cpp instead of directly undef'ing __SIZEOF_INT128__, because the latter is UB. This commit amends befda1accab417ce5f55cb11816e6ded51af55e3. Pick-to: 6.6 Change-Id: Ia2c110b5744c3aaa53eda39fb44984cf5a01fac2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Explicitly specify the alignment of QUuid::Id128Bytes unionIvan Solovev2023-07-171-1/+1
| | | | | | | | | | | | | | ... because otherwise the union can change its alignment based on the presence of the data128 member. For example, QtBluetooth explicitly #undef's __SIZEOF_INT128__ in its removed_api.cpp, which leads to UB without this patch. Found during API review Pick-to: 6.6 Change-Id: Ia17122cc9f3d422530cf722ea528591fce7ab7ff Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QUuid: handle quint128 and Id128Bytes data in the same wayIvan Solovev2023-07-171-15/+29
| | | | | | | | | | | | | | | | | | The QUuid(quint128) ctor was handing the incoming data differently from the QUuid(Id128Bytes) ctor. Same was valid for the return values of QUuid::toUint128() vs QUuid::toBytes(). The provided test didn't reveal it, because it was treating the same 128-bit input value as BE in one place, and as LE in another place. This patch fixes the test, and updates the implementation of QUuid(quint128) ctor and toUInt128() method to verify that the updated test passes. This commit amends 8566c2db85a6f579a1a0432d0b7621633158e04c Pick-to: 6.6 Change-Id: I24edb8ba0c8f7fd15062ba0b2a94ad387c3e98b6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QUuid: remove pointless inline keywordIvan Solovev2023-07-171-2/+2
| | | | | | | | | | constexpr functions are implicitly inline Found during API review. Pick-to: 6.6 Change-Id: I94daa0a67336fa99a1465115edb83e545580a78a Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Revert "QUuid: use NSDMI to initialize the members"Ivan Solovev2023-07-121-5/+6
| | | | | | | | | | | | | | | | | This reverts commit c3c5d2cab07ffed1ddfb7978870c05917d89fa39. Reason for the revert - it breaks the purpose of the Qt::Uninitialized ctor The commit also updates the QUuid(quint128, QSysInfo::Endian) ctor to avoid the compiler errors: error: member ‘QUuid::data*’ must be initialized by mem-initializer in ‘constexpr’ constructor Pick-to: 6.6 Change-Id: I0057fab3d7203adaddad3e890129668923a9eef6 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QUuid: fix qSwap() use in constexpr functionMarc Mutz2023-06-141-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | I don't know why the compilers didn't shout here, but what _should_ have happened is: - qSwap<quint64>() gets instantiated - the unqualified swap() call inside gets resolved to std::swap() - std::swap() is not constexpr in C++17, so qSwap<quint64>() silently gets its constexpr dropped - error, due to the use of non-constexpr function qSwap() in constexpr function bswap() There's no way through the function that doesn't hit the qSwap(), so that is also not the explanation. And, indeed, replacing qSwap() with std::swap() gets me the expected error... Before compilers get the idea, rewrite the code to not require swapping. Amends 686c02224c03735356bdab987bf62644eb34cc34. Pick-to: 6.6 Change-Id: Ie1364bb2fd148bf995a8ffd321f77a6021176928 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QUuid: add support for 128-bit integersThiago Macieira2023-05-201-1/+36
| | | | | | | | | [ChangeLog][QtCore][QUuid] Added support for converting between QUuid and quint128, on platforms that offer 128-bit integer types (all 64-bit ones supported by Qt, except MSVC). Change-Id: Id8e48e8f498c4a029619fffd1728c9553e871df5 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QUuid: add the ability to specify the byte order for 128-bit IDsThiago Macieira2022-12-161-7/+21
| | | | | | | | Some more modern protocols like Bluetooth LE transmit data in little endian. QtBluetooth will benefit from this. Change-Id: Id8e48e8f498c4a029619fffd1728c94ddd444537 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QUuid: add a trivial structure to support exactly 128 bitsThiago Macieira2022-12-161-1/+43
| | | | | | | | This is inspired by QBluetoothUuid's quint128, but with a better name. It also matches systemd's sd_id128. Change-Id: Id8e48e8f498c4a029619fffd172893dc1545adda Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* QUuid: use NSDMI to initialize the membersThiago Macieira2022-12-161-5/+5
| | | | | Change-Id: Id8e48e8f498c4a029619fffd172893c31bb0aba1 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Replace usages of Q_CLANG_QDOC with Q_QDOCLuca Di Sera2022-10-211-4/+4
| | | | | | | | | | | | | | | | | | | | | | | To allow the user to customize the C++ code that QDoc sees, so as to be able to work-around some limitations on QDoc itself, QDoc defines two symbols: Q_QDOC and Q_CLANG_QDOC, both of which are "true" during an entire execution of QDoc. At a certain point in time, QDoc allowed the user the choice between a custom C++ parser and a Clang based one. The Q_QDOC symbol would always be defined while the Q_CLANG_QDOC symbol would be defined only when the Clang based parser was chosen. In more recent times, QDoc always uses a Clang based parser, such that both Q_CLANG_QDOC and Q_QDOC are always defined, making them equivalent. To avoid using different symbols, and the possible confusion and fragmentation that derives from it, all usages of Q_CLANG_QDOC are now replaced by the equivalent usages of Q_QDOC. Change-Id: I5810abb9ad1016a4c5bbea99acd03381b8514b3f Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Use SPDX license identifiersLucie Gérard2022-05-161-38/+2
| | | | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Files that have to be modified by hand are modified. License files are organized under LICENSES directory. Task-number: QTBUG-67283 Change-Id: Id880c92784c40f3bbde861c0d93f58151c18b9f1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* QtCore: Replace remaining uses of QLatin1String with QLatin1StringViewSona Kurazyan2022-03-261-1/+1
| | | | | | | Task-number: QTBUG-98434 Change-Id: Ib7c5fc0aaca6ef33b93c7486e99502c555bf20bc Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Make one QT_REMOVED_SINCE/QT_BUILD_REMOVED_API per moduleMarc Mutz2022-02-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A single global QT_REMOVED_SINCE will start hurting us once more modules downstream of QtCore start using the mechanism. With every use of feature, the set of code that needs to compile under QT_BUILD_REMOVED_API increases. Since we use QT_REMOVED_SINCE in situations where overloading the new and the old function don't work in general, this means all code included by any removed_api.cpp needs to be very carefully written to ensure that any calls to the overload set formed by the combination of old and new function(s) don't create ambiguities. Likewise, the set of APIs that change semantics under QT_BUILD_REMOVED_API also increases. At some point, the combination of removed_api.cpp including almost every module header and almost every header exposing source-incompatibilities when included in removed_api.cpp will make maintenance a headache. By making QT_REMOVED_SINCE and QT_BUILD_REMOVED_API per-module (QT_CORE_REMOVED_SINCE, ...), easy now that we generate the export macros using CMake, we limit the scope of this problem to the module using the feature. Downstream modules (say, QtWidgets) will now see the QtCore API like every other user, even in the widgets/compat/removed_api.cpp TU. Pick-to: 6.3 Change-Id: I177bc7bd5aa8791639f97946c98e4592d2c7f9d9 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QUuid: port to QAnyStringViewMarc Mutz2021-07-301-1/+6
| | | | | | | | | | | | | | | | | Remove the QString/QStringView/QLatin1String/const char* overloads from the API, but not the ABI. As a drive-by, replace a use of QStringView::left() by truncate(), as suggested by a comment. [ChangeLog][QtCore][QUuid] The from-string constructor and the fromString() function now take QAnyStringView (was: overload set with a subset of QString, QByteArray, const char*, QLatin1String, QStringView each). Change-Id: If7fa26cfbef9280480c78b669d9f5f14118995ed Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QUuid: port fromRfc4122() to QByteArrayViewMarc Mutz2021-07-281-0/+3
| | | | | | | | | Remove the QByteArray overload from the API, but not the ABI. Adapt callers. Change-Id: I88aa09cbca3b89d0b249ce336ebe49c4b352c9e1 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QUuid: remove Windows-only pre-C++11 constructor implementationMarc Mutz2021-07-091-11/+0
| | | | | | | Amends bd62dc13919556c6dc564df25cbf0ddf456c05e7. Change-Id: Iba10e7d70e7bd9d7c6068632dd2f429a52945463 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* QUuid: clean up pre C++11 constructorsMarc Mutz2021-07-081-26/+0
| | | | | | | | | All compilers Qt 6 supports support C++11 Uniform Initialization now. Change-Id: I1ddcc506347db1770c535047ebe2547ff33d843e Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Whitespace cleanup in corelib/ mimetypes, plugin and threadAllan Sandfeld Jensen2020-10-211-3/+2
| | | | | | | Done with selective application of clang-format Change-Id: Iee6bf2426de81356b6d480629ba972f980b6d93d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QUuid: merge toString() overloads and toByteArray() overloadsEdward Welbourne2020-09-141-5/+3
| | | | | | | | | | In each case, simply give WithBraces as default for mode, since that's what _q_uuidToHex() used internally. Task-number: QTBUG-85700 Change-Id: I9f6fddb259703917129d4be742bbdd2eb1647f44 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Make QUUid constructors from string like types explicitLars Knoll2020-08-271-3/+3
| | | | | | | | I don't think we want to have implicit conversion from a const char * or a QByteArray to a QUuid. Change-Id: Idfe7450ce15b89e295aa7af7ccf1fc94f5acd4f9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Replace Qt CONSTEXPR defines with constexprAllan Sandfeld Jensen2020-08-141-9/+9
| | | | | | | | Both normal and relaxed constexpr are required by our new minimum of C++17. Change-Id: Ic028b88a2e7a6cb7d5925f3133b9d54859a81744 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Change qHash() to work with size_t instead of uintLars Knoll2020-04-091-1/+1
| | | | | | | | | | | This is required, so that QHash and QSet can hold more than 2^32 items on 64 bit platforms. The actual hashing functions for strings are still 32bit, this will be changed in a follow-up commit. Change-Id: I4372125252486075ff3a0b45ecfa818359fe103b Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Replace Q_DECL_NOEXCEPT with noexcept in corelibAllan Sandfeld Jensen2019-04-031-22/+22
| | | | | | | In preparation of Qt6 move away from pre-C++11 macros. Change-Id: I44126693c20c18eca5620caab4f7e746218e0ce3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge remote-tracking branch 'origin/dev' into 5.11Liang Qi2018-02-101-1/+3
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qvarlengtharray.qdoc src/corelib/tools/qvector.qdoc Resolved documentation changes in favor of 017569f702b6dd0, which keeps the move overloads along with its const-ref sibling. Change-Id: I0835b0b3211a418e5e50defc4cf315f0964fab79
| * Support for LTTNG and ETW tracingRafael Roquetto2018-01-281-1/+3
| | | | | | | | | | | | | | | | | | | | This commit introduces minimal support for instrumentation within Qt. Currently, only LTTNG/Linux and ETW/Windows are supported. Change-Id: I59b48cf83acf5532a998bb493e6379e9177e14c8 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QUuid: add a way to get the string form without the bracesThiago Macieira2018-02-031-0/+9
|/ | | | | | | | | | | | | | While we're at it, add a way to get it without the dashes too. I'm calling it "id128", as in "128-bit ID", as seen in journald's sd_id128_t type and the sd_id128_xxx() API. [ChangeLog][QtCore][QUuid] Added a parameter to both toString() and toByteArray() to allow controlling the use or not of the braces and dashes in the string form. Change-Id: I56b444f9d6274221a3b7fffd150cde706cfc5098 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* doc: Ensure GUID is declared for clangqdocMartin Smith2017-11-161-6/+6
| | | | | | | | | Clang needs to see a declaration for GUID, or it will ignore some function declarations that must be documented. Change-Id: Ic5d5a88b82c709be7f763a44994b1c077977731a Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* QUuid, QHttpMultipart and QHash: use QRandomGeneratorThiago Macieira2017-06-121-0/+1
| | | | | | | | | QRandomGenerator can produce more than 31 bits of data. And it uses /dev/urandom for us on Unix, so QHash does not need to duplicate that part. Change-Id: Icd0e0d4b27cb4e5eb892fffd14b52a0d91f179eb Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QUuid: add fromString(QStringView/QLatin1String)Marc Mutz2017-04-201-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As for the formatting code, de-duplicate the parsing code by only parsing char*s, converting QChars to Latin-1 first in a small buffer. The QUuid(const char*) ctor performed no length checking, relying instead on the checks performed within _q_uuidFromHex(), which includes an implicit check for premature end (because NUL is not a valid token for the parser). The (QString) and (QByteArray) ctors did perform length checking. To the extent possible, this is removed, since it is handled by _q_uuidFromHex(). Failure cases need not be optimized. Only the QLatin1String overload needs to do some checking, because views in general are not NUL-terminated. The QStringView overload can just append a NUL when it converts to Latin-1. The only check I added to _q_uuidFromHex() is that for src == nullptr. It would otherwise be duplicated in several callers. While touching the internal functions, port to passing and returning by value. Saves 1.6KiB in text size on optimized GCC 6.1 Linux AMD64 builds, even though we added new API. Port some users to the new functions. Expand fromString() test. [ChangeLog][QtCore][QUuid] Added fromString(QStringView/QLatin1String). Change-Id: I519339419129550c86e0ea80514865cd6a768f5d Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Properly forward-declare the Apple types with Q_QDOCOlivier Goffart2016-05-311-1/+1
| | | | | | | | | They are needed for the header to be parsed properly with clang based qdoc. While we are at it, change the condition from Q_OS_MAC to Q_OS_DARWIN Change-Id: I2a2f9c1159f47795d9811023d67c86fec1866846 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* darwin: Simplify conversion function declarations in headersTor Arne Vestbø2016-05-031-5/+1
| | | | | | | | | | | We don't need to include Q_QDOC in the forward-declarations of the native types, and Q_FORWARD_DECLARE_OBJC_CLASS works in non-Objective-C mode as well, which means we can declare the Objective-C versions of the functions without guards. Change-Id: I32089c496b4f7ce47f0388ba3f65e0b091d1e9ee Reviewed-by: Martin Smith <martin.smith@theqtcompany.com> Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* Forward declare the Objective C types for the documentation.Olivier Goffart2016-03-181-2/+2
| | | | | | | Required for clang doc parsing. Change-Id: Ia00717377e9524efae1266d1a01b2ef0e064b11e Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
* Updated license headersJani Heikkinen2016-01-151-14/+20
| | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Add Objective-C specific type converters to QUuid.Jake Petroules2015-11-041-0/+15
| | | | | | | | | | This patch adds the Objective-C NSUUID/CFUUIDRef converters to QUuid [ChangeLog][QtCore][Objective-C] Added NSUUID/CFUUIDRef converters for QUuid Change-Id: Ifebf6fd5ce9f46dcdc06f221e189cb1fd9079e18 Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
* QUuid: add missing relational operatorsMarc Mutz2015-04-041-0/+5
| | | | | | | QUuid has ==, !=, <, and >. Add <= and =>, too. Change-Id: I11a0b8028be766e2d48dc7664d935df4d327b3d3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QUuid: add some noexceptMarc Mutz2015-04-041-17/+17
| | | | | Change-Id: I43647e558a761ff6e7a275e30382919ba038f467 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Update copyright headersJani Heikkinen2015-02-111-7/+7
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
* Add Q_DECL_RELAXED_CONSTEXPR to QUuidOlivier Goffart2014-12-111-8/+7
| | | | | | Change-Id: I0fa5806ef7a8e14b0728f0b914fa9ffd0dbad811 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Update license headers and add new license filesMatti Paaso2014-09-241-19/+11
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* qcompilerdetection.h: add Q_COMPILER_UNIFORM_INITMarc Mutz2013-11-151-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Up to now, the feature classe Uniform Initialization was subsumed by the Q_COMPILER_INITIALIZER_LISTS flag together with support for std::initializer_list. This caused at least two problems: 1. On QNX, the standard libray does not ship <initializer_list>, even though the compiler (a GCC 4.6, IIRC) supports it. But since there was only one Q_COMPILER flag for both, support for the compiler-only part of the feature had to be disabled, too. 2. MSVC 2013 supports initializer lists, but has a bug that renders full uniform initialization support, as required for QUuid, useless. By splitting the feature into two, we can separate them better, and do so in QUuid, which is the only class that currently takes advantage of uniform initialization (to provide constexpr constructors). Since Q_COMPILER_INITIALIZER_LISTS worked as a flag for uniform initialization so far, with the two known exceptions above, UNIFORM_INIT is defined whenever INITIALIZER_LIST is, except that I don't revert UNIFORM_INIT on QNX as I do for INITIALIZER_LISTS and that I expect the MSVC 2013 features to set INITIALIZER_LIST, but not UNIFORM_INIT. Task-number: QTBUG-34705 Change-Id: I81916e950a0f3aab3de7977e0326d2de3d31b14c Reviewed-by: Yuchen Deng <loaden@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* qdoc: Use Q_QDOC in quuid.h to help qdocMartin Smith2013-04-031-5/+5
| | | | | | | | | | | | | Some new ctor initializers were added that use curly braces. qdoc's dumb C++ parser can't handle curly braces in the ctor area; it thinks they are the body of the function. In this update, the Q_QDOC macro is used to isolate these problems so qdoc doesn't have to deal with them. Task-number: QTBUG-30254 Change-Id: Ie318e4ac58861f4ebd8a7b9f004d2677f850436e Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Remove QT_{BEGIN,END}_HEADER macro usageSergio Ahumada2013-01-291-4/+0
| | | | | | | | | | | The macro was made empty in ba3dc5f3b56d1fab6fe37fe7ae08096d7dc68bcb and is no longer necessary or used. Discussed-on: http://lists.qt-project.org/pipermail/development/2013-January/009284.html Change-Id: Id2bb2e2cabde059305d4af5f12593344ba30f001 Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: hjk <hjk121@nokiamail.com>