summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qmetatype.h
Commit message (Collapse)AuthorAgeFilesLines
* 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>
* Mark QByteArrayList as metatype built-in type.Jędrzej Nowacki2014-08-281-2/+5
| | | | | | | As a side effects it also adds core templates types to the tests Change-Id: I0e3338e0bffdf21982aa83d404c83288e54411f4 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Make VectorBoolElements static properties const.Jędrzej Nowacki2014-06-251-2/+2
| | | | | | | The elements should not be changeable. Change-Id: I108cb42b1237cd61c4d8f2fbe13305fbbf4ef311 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Metatype: Specialize IteratorOwner for vector<bool>Stephen Kelly2014-06-161-3/+30
| | | | | Change-Id: I542af3a77b0a139e137a5a736b74042a8c25eb95 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-05-131-0/+1
|\ | | | | | | | | | | | | Manually changed enum to LibGL in src/plugins/platforms/xcb/qglxintegration.cpp Change-Id: If34ee6cce3d1d51fb4bb1fdfa59c30389ea0d207
| * Add a comment about not obvious code in VariantData.Jędrzej Nowacki2014-05-021-0/+1
| | | | | | | | | | Change-Id: I943af28c47b396aa35173da2a1294b86c8a522fa Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Build fix for auto-registration of Container<void*>Jędrzej Nowacki2014-04-231-2/+9
| | | | | | | | | | | | | | | | IteratorOwner pointer specialization was failing for void* because of an invalid function overload. Change-Id: I80355ddd2b871c1fa2fa5bf5a4ed8bc7768fc3c9 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | QMetaType: Specialize IsPointerToTypeDerivedFromQObject for const void*Stephen Kelly2014-04-221-0/+5
| | | | | | | | | | | | | | | | | | 'const void' is not derived from QObject, and is not a type we can use sizeof to determine that. Change-Id: I008f444bbed9fc8f9147da0f7f336757f660e224 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Merge remote-tracking branch 'origin/stable' into devIikka Eklund2014-04-011-35/+7
|\| | | | | | | Change-Id: I2a6eb9dd7724931bc89f28bcc156e77c4e26d069
| * Reduce clang compilation time of tst_qmetatype by ~2%Jędrzej Nowacki2014-03-281-35/+7
| | | | | | | | | | Change-Id: I64fe12dd0bf9c35ae06fc5a68addc36848cdda3b Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2014-03-241-1/+6
|\| | | | | | | | | | | | | Conflicts: src/gui/image/qjpeghandler.cpp Change-Id: I9db3acea7d5c82f5da679c8eaeb29431136665f0
| * Fix Q_DECLARE_METATYPE macroJędrzej Nowacki2014-03-171-1/+2
| | | | | | | | | | | | | | | | | | The macro should stringify value of the given token not the token itself. Task-number: QTBUG-37547 Change-Id: I90f4fa613bd13d5a581828ab13f620b40dfd3593 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| * Remove level 4 compiler warnings from MSVC.David Schulz2014-03-151-0/+4
| | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-7233 Change-Id: I52067e3a22e98a62fd87415906e54a54ff2d6b49 Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Dave McClelland
* | QtCore: Fix MSVC 64bit warnings about conversion from size_t to int.Friedemann Kleint2014-02-251-2/+2
|/ | | | | | | warning C4267: '=' : conversion from 'size_t' to 'int', possible loss of data Change-Id: I9be380cbb7bed4cd95515074c7cad7e41a511dc9 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Fix ‘looses precision’ warning in public APIKurt Pattyn2013-12-271-3/+3
| | | | | Change-Id: I935e6f278e539f8e6aaca0bc381371ec85aa5c67 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QMetaType: Fix equality comparison of type-erased iterators.Stephen Kelly2013-12-131-2/+12
| | | | | | | Task-number: QTBUG-33997 Change-Id: I0d4da562540df0e3732769881ba124cb980f6b82 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* QMetaType: Fix copy of type erased iteratorStephen Kelly2013-12-131-2/+10
| | | | | | | | | | | Behavior differs depending on whether the iterator is a value_type*, or a different class entirely. Ensure that the correct behavior is used when copying. Task-number: QTBUG-33997 Change-Id: Ib6db2a3c4a5aa861b851833a7f0ecb855a3e828f Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* QMetaType: Rename template type of type-erased iterator operations.Stephen Kelly2013-12-121-6/+6
| | | | | | | | This struct is a specialization for the case that the const_iterator is a pointer to the value type. Reflect that in the type name. Change-Id: I0a4ac03840658056285080860baec8313746c71c Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Correct compiler warnings for sign conversionKurt Pattyn2013-12-061-3/+3
| | | | | | | | | | | | | qstrlen() returns a uint. When assigned to an int, the compiler warns about sign conversions. Because these calls are used within templates, the code appears in user generated code, and hence the warnings cannot be suppressed by the -isystem directive. Using the -Werror flag, makes the user code fail. [ChangeLog][QtCore] Fixed sign conversion warnings in code using QMetaTypeId. Change-Id: Ib7603679d6526467f8cbb9d7bcf5f56c6af47ceb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* MetaType: Fix operator{+,-}(int) with the type-erased const_iterators.Stephen Kelly2013-09-131-0/+28
| | | | | | | | 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>
* Fix new warnings under Clang 3.3Thiago Macieira2013-09-131-34/+36
| | | | | | | | | | | | | | | Probably added by a1898f4466518bf3e1b6e9154eec05ecf9d909e3. qmetatype.h:70:29: error: inline function 'qMetaTypeId<QtMetaTypePrivate::QSequentialIterableImpl>' is not defined [-Werror,-Wundefined-inline] qmetatype.h:1363:30: note: used here const int toId = qMetaTypeId<QtMetaTypePrivate::QSequentialIterableImpl>(); qmetatype.h:70:29: error: inline function 'qMetaTypeId<QtMetaTypePrivate::QAssociativeIterableImpl>' is not defined [-Werror,-Wundefined-inline] qmetatype.h:1386:30: note: used here const int toId = qMetaTypeId<QtMetaTypePrivate::QAssociativeIterableImpl>(); Change-Id: I9afe1a3d50ab23eb701797e28b259966dc95a147 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Add a convenient way to get a type-erased smart pointer from a QVariant.Stephen Kelly2013-09-111-0/+45
| | | | | | | | | | | | Any known smart pointer in a QVariant can be handled in this way. The metatype system can be informed of new smart pointer types using an existing macro which is now documented. This is very similar to the existing infrastructure for containers. Change-Id: Iac4f9fabbc5a0626c04e1185d51d720b8b54603d Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Metatype: Remove the need for runtime-registration of 3rd party containers.Stephen Kelly2013-09-091-69/+33
| | | | | | | | | Replace that need with a macro so that registration of the container helper conversions is done at the time of registration of the container (usually when it is put into a QVariant). Change-Id: I823fb3fdbce306ebc9f146675ac43724cec678d5 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Move the preprocessor iterator for Qt smart pointers with the others.Stephen Kelly2013-09-061-8/+10
| | | | | | | Use it to forward declare the types. Change-Id: I48d9e32dcf02471d197a82502d96d60807d11d57 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Make the automatic 1arg and 2arg metatype macros work with namespaced Qt.Stephen Kelly2013-09-061-4/+13
| | | | | Change-Id: I64aa3cacd0cf57235ad43f089716765b384ef412 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fix the automatic declaration of smart pointer types.Stephen Kelly2013-09-061-6/+34
| | | | | | | | | | | | Before this patch, qRegisterMetaType<QSharedPointer<double> >("QSharedPointer<double>") without a metatype declaration fails to compile, whereas it works with Qt 5.1 (ie, before commit e9a69c3ba928bd88974563b386b000ad6583f969) Change-Id: I9408f711c9df810ff29b879b7696dab81c1160f1 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Simplify the smart pointer metatype templateStephen Kelly2013-09-051-17/+6
| | | | | | | | | | Don't use ## concatenation to create an identifier. That won't work for types in namespaces: Q_DECLARE_SMART_POINTER_METATYPE(QtPrivate::FutureSmartPointer) Change-Id: I876ea93d817724005efc28413f09c01623c2a7a1 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fix Clang 3.3 warning on using an undefined inline functionThiago Macieira2013-09-051-12/+16
| | | | | | | | | | | | | | | | Clang doesn't like forward-declared inline functions. qmetatype.h:70:29: error: inline function 'qMetaTypeId<QtMetaTypePrivate::QPairVariantInterfaceImpl>' is not defined [-Werror,-Wundefined-inline] inline Q_DECL_CONSTEXPR int qMetaTypeId(); ^ qmetatype.h:1463:30: note: used here const int toId = qMetaTypeId<QtMetaTypePrivate::QPairVariantInterfaceImpl>(); ^ Change-Id: I1454af5cce56512f0b3d63cfaf51a536207fc511 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Merge branch 'stable' into devSergio Ahumada2013-07-111-5/+5
|\ | | | | | | | | | | | | | | | | | | Conflicts: qmake/generators/mac/pbuilder_pbx.cpp src/corelib/json/qjsonwriter.cpp src/corelib/kernel/qeventdispatcher_blackberry.cpp src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm Change-Id: I24df576c4cbd18fa51b03122f71e32bb83b9028f
| * QtCore: Fix remaining MSVC-64 warnings about integer truncation.Friedemann Kleint2013-07-021-5/+5
| | | | | | | | | | | | | | | | | | warning C4267: 'argument' : conversion from 'size_t' to ' int', possible loss of data. Change-Id: I8d1ca27d4d66a9ce0deb70766446e780308bba33 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-06-201-1/+1
|\| | | | | | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm src/plugins/platforms/qnx/qqnxrasterbackingstore.cpp tools/configure/configureapp.cpp Change-Id: I3092bd3276af14304b7ab3ae1e1cc05d11cdede0
| * Remove use of 'register' from Qt.Stephen Kelly2013-06-171-1/+1
| | | | | | | | | | | | | | | | | | | | It is deprecated and clang is starting to warn about it. Patch mostly generated by clang itself, with some careful grep and sed for the platform-specific parts. Change-Id: I8058e6db0f1b41b33a9e8f17a712739159982450 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-06-121-2/+2
|\| | | | | | | | | | | | | Conflicts: src/plugins/platforms/cocoa/qcocoamenubar.mm Change-Id: I4a699fc8a7f30b2af9de8e496c3d5f027b7495bb
| * QtCore: Fix MSVC-64 warnings about integer truncation.Friedemann Kleint2013-06-081-2/+2
| | | | | | | | | | | | | | | | warning C4267: 'argument' : conversion from 'size_t' to ' int', possible loss of data. Change-Id: I79af7497420d468b5bc7c48c9ae21b86117519a9 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
* | Core: QDebug and comparison operator support metatypes.Christoph Schleifenbaum2013-05-271-0/+112
| | | | | | | | | | | | | | | | This patch adds a way to enable operator<, operator== and operator<< into QDebug for QVariants with custom types. Change-Id: I3d12d891bd7252ad2b8f1de69bced354800a1f29 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | Make it possible to access QPair and std::pair elements from a QVariant.Stephen Kelly2013-05-201-0/+117
| | | | | | | | | | Change-Id: I9dc73748073d0d1e43bdadbce73339dfcc1bc647 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | Add container access functionality for associative containers in QVariant.Stephen Kelly2013-05-201-3/+265
| | | | | | | | | | Change-Id: I4763a4c157e52918a0a68cba63624c0649aca235 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* | Change the ownership semantics of metatype converter functions.Stephen Kelly2013-05-201-38/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Destroying the instances is a problem because the instances might have been created in a plugin. In that case, the destructor of the instance will be implemented in the plugin. As the instance destruction code is run very late, the plugin might have already been unloaded by the time an attempt is made to destroy the instance. The workaround is to create static instances on the stack. Task-number: QTBUG-31142 Change-Id: Ic2632c3548a734b742da46d90249916c35705d46 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* | Add automatic container access registration for built-in containers.Stephen Kelly2013-05-081-1/+68
| | | | | | | | | | Change-Id: I4d590c23e072994930922ff73367600f848fbcf0 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | Add QVariant container iteration API.Stephen Kelly2013-05-081-0/+274
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A new set of classes is introduced for iterating over the contents of a container within a QVariant without knowing the exact type of the container, but with the guarantee that the element type within the container is a metatype. The implementation of the iterable interface uses the stl-compatible container API so that we can also iterate over stl containers, or any other container which also conforms to stl norms. This enables the functionality in the bug report. Task-number: QTBUG-23566 Change-Id: I92a2f3458516de201b8f0e470982c4d030e8ac8b Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | Core: Support for converting user defined QVariant types.Christoph Schleifenbaum2013-05-081-0/+171
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patchs allows the user to convert defined QMetaType types like MyType to be converted by using e.g. QVariant::toString(), mapping to MyType::toString(). Also all the other QVariant::toXYZ() methods are supported so far. The patch adds static methods QMetaType::registerConverter supporting: - implicit convertion - conversion using member method of source type - conversion using unary functor Change-Id: I4f1db83d9c78bcc9df5c42f82f95cce0480cdcc3 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | Use variadic templates to mark function pointers as non-QObjects.Stephen Kelly2013-04-241-0/+5
| | | | | | | | | | Change-Id: I4d4e7a0498ff8f5b834dae4008d1311838180036 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Merge branch 'stable' into devSergio Ahumada2013-04-101-1/+1
|\| | | | | | | Change-Id: Icff019d74ae04c628a80f66aa478e4db40fae464
| * Fix MSVC warning about truncation from 64bit to 32bit int.Friedemann Kleint2013-04-061-1/+1
| | | | | | | | | | Change-Id: Id3e2f148aa430045d32d61b61eabc3f7197cbbf0 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* | Move the Preprocessor loop macros up with the others.Stephen Kelly2013-04-051-13/+13
| | | | | | | | | | Change-Id: Iec9a6ab7cbd12902f8aeacdde9987ca52e2e2391 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-04-031-27/+34
|\| | | | | | | Change-Id: Id96d4076610366a7cc66c8d8382ca25c33eaa71d
| * QMetaTypeId: use QByteArray, not QVarLengthArray, to construct type namesMarc Mutz2013-03-291-27/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So far, type-name strings for class template instantiations were constructed in QMetaTypeId::qt_metatype_id() by concatenating various bits and pieces into a QVarLengthArray<char>, presumably to avoid the dynamic memory allocation for small strings. Yet, when passing the result to qRegisterNormalisedMetaType, which takes a QByteArray, the QVarLengthArray was copied from, not by QByteArray::fromRawData(), but by QByteArray(const char*,int), which unconditionally results in a dynamic memory allocation after all. What's worse: the characters are copied twice: First into the QVarLengthArray, and then into the QByteArray. Remove the first of these copies by using QByteArray+reserve() to copy directly into the final QByteArray. Change-Id: Id915798a318fe97279a7cc0aca176544f99c7e86 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Add automatic metatype handling for common standard library containers.Stephen Kelly2013-04-011-0/+10
|/ | | | | | Change-Id: I7fc6db6ea71026066d3e3fa4bfd5ecd5c96ad067 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fix QMetaType of const referencesOlivier Goffart2013-02-211-0/+3
| | | | | | | | | | | | | | This fixes QMetaType detection of const reference arguments in signals while connecting using the new syntax and Qt::QueuedConnection const references should have the same QMetaType as non references. That means we need to remove the const reference while getting the QMetaType. Change-Id: I9b2688da7fb9ae985aec0d8fa62a1165357ffe71 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>