summaryrefslogtreecommitdiffstats
path: root/src/corelib/global
Commit message (Collapse)AuthorAgeFilesLines
* Doc: Prepare for building modular QtCore docs.Casper van Donderen2012-04-193-160/+137
| | | | | | | | | | | | This change fixes most qdoc errors in QtCore. There are about 900 left. The main thing this change does is moving documentation from qtcore from /doc/src to /src/corelib/doc. Other issues resolved are mis-use of qdoc commands. Change-Id: I002d01edfb13575e8bf27ce91596a577a92562d1 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com> Reviewed-by: Jerome Pasion <jerome.pasion@nokia.com>
* Change coreservices -> iosIan Dean2012-04-191-4/+4
| | | | | | | | Replace "contains(QT_CONFIG, coreservices)" with "!ios" in config files. Replace "QT_NO_CORESERVICES" with "Q_OS_IOS" in source files. Change-Id: Id3b02316b245a24ce550e0b47596d18a4a409e4f Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Merge remote-tracking branch 'origin/master' into api_changesLars Knoll2012-04-168-91/+162
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure src/corelib/io/qurl.cpp src/gui/kernel/qwindow.cpp src/tools/moc/generator.cpp src/widgets/kernel/qwidget_qpa.cpp src/widgets/styles/qstyle.h src/widgets/widgets/qtabbar.cpp tests/auto/corelib/codecs/utf8/tst_utf8.cpp Change-Id: Ia457228d6f684ec8184e13e8fcc9d25857b1751e
| * __builtin_unreachable was added to GCC in version 4.5, so fix macrosThiago Macieira2012-04-131-2/+4
| | | | | | | | | | Change-Id: Ida63bb46f696ae9d60331d863bf1478415a08ff2 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| * Remove Q_CORE_EXPORT from the simple QFlag and QIncompatibleFlagThiago Macieira2012-04-131-2/+2
| | | | | | | | | | Change-Id: I0302238e817fc7d3b4682c5cc4f9cb51d181a7d2 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| * Move QFlags to qflags.hThiago Macieira2012-04-133-86/+142
| | | | | | | | | | | | | | This is a verbatim copy of the source code. Change-Id: I1f7efc75cad1ba05dda31d8ccfd091ae9ae40fd5 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| * Add OS version detection for windows 8Shane Kearns2012-04-122-0/+6
| | | | | | | | | | | | | | Based on consumer preview, the internal version is 6.2 Change-Id: I9d6ff6c7614f46a20d489e8a8f4aefeb60c547f6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Bump some Qt 5 to-do's to Qt 6.Jason McDonald2012-04-102-2/+2
| | | | | | | | | | | | | | | | | | | | Source-incompatible changes are no longer desirable for Qt 5, so these items must wait until at least Qt 6. Task-number: QTBUG-23524 Change-Id: I0b9ae5f6f3a792e0169a4b0d3aefbdcb744acd2f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
| * QTypeInfo: document Q_PRIMITIVE_TYPE existing practiceMarc Mutz2012-04-091-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Despite the documentation requiring Q_PRIMITIVE_TYPEs to be PODs, existing practice in Qt (QFixed, QFlags, QUuid) is to allow constructors on primitive types as long as every bit pattern represents a valid object (ie. memory doesn't have to be initialised to hold an object of the type) and memcpy() can be used to create an independent copy of the object (memcpy()ing QString, e.g., while creating two valid objects, doesn't create independent copies). Change-Id: Ia85d48b89f6cc84e69ea76719eab9a858d247ad6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* | Deprecate qMemCopy/qMemSet in favour of their stdlib equivilents.Robin Burchell2012-04-114-21/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Just like qMalloc/qRealloc/qFree, there is absolutely no reason to wrap these functions just to avoid an include, except to pay for it with worse runtime performance. On OS X, on byte sizes from 50 up to 1000, calling memset directly is 28-15% faster(!) than adding an additional call to qMemSet. The advantage on sizes above that is unmeasurable. For qMemCopy, the benefits are a little more modest: 16-7%. Change-Id: I98aa92bb765aea0448e3f20af42a039b369af0b3 Reviewed-by: Giuseppe D'Angelo <dangelog@gmail.com> Reviewed-by: John Brooks <john.brooks@dereferenced.net> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* | Merge remote-tracking branch 'origin/master' into api_changesOswald Buddenhagen2012-04-105-214/+237
|\| | | | | | | | | | | | | | | | | | | Conflicts: configure src/widgets/styles/qwindowsxpstyle.cpp tests/auto/gui/kernel/qwindow/qwindow.pro tests/auto/gui/kernel/qwindow/tst_qwindow.cpp Change-Id: I624b6d26abce9874c610c04954c1c45bc074bef3
| * Prepare category logging for Qt integrationWolfgang Beck2012-04-032-15/+25
| | | | | | | | | | | | | | Change-Id: I0c784a945fe87d7ba52a44f5c7246de1709ae888 Reviewed-by: Lincoln Ramsay <lincoln.ramsay@nokia.com> Reviewed-by: Peter Yard <peter.yard@nokia.com> Reviewed-by: Alex <alex.blasche@nokia.com>
| * Logging: Make sure documentation shows upKai Koehne2012-04-022-195/+199
| | | | | | | | | | | | | | | | | | | | | | | | | | Move the documentation for qDebug, qWarning, qCritical, qFatal, QMessageHandler, QtMsgHandler, qtInstallMsgHandler, qInstallMessageHandler from qlogging.cpp to qglobal.cpp. For some reason it's not picked up from qlogging.cpp otherwise. Also, tweak the output so that e.g. qDebug and friends are correctly listed as macros. Change-Id: I8cabf04bae0e8ae9a31a40ebe2d3272c3a33653b Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
| * Improve documentation for QMessageLoggerKai Koehne2012-04-021-3/+3
| | | | | | | | | | Change-Id: I6c52b74b9fa0d894492f335e2f303f927ee6307b Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
| * Add Mac OS 10.8 define.Morten Sorvig2012-03-301-1/+4
| | | | | | | | | | | | Change-Id: Ief687d3d6188b11c39d9ac4879928b35d8b467d0 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * Add a Q_NORETURN macro to mark a function that never returnsThiago Macieira2012-03-271-0/+6
| | | | | | | | | | | | | | | | | | This is implemented for GCC, ICC, Clang and MSVC. With this macro, the compiler can generate better code because it knows that the function being called will not return. Change-Id: Iea2bc7be464606639be65ccb73911d7ed1b29a64 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* | Remove references to QT_NO_STL from QtCoreThiago Macieira2012-04-072-12/+0
| | | | | | | | | | | | | | | | QT_NO_STL is now no longer defined, so remove the conditionals and select the STL side. Change-Id: Ieedd248ae16e5a128b4ac287f850b3ebc8fb6181 Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
* | Enable variadic macros for MSVC >= 2005João Abecasis2012-04-051-0/+4
| | | | | | | | | | Change-Id: I8793ea0f6e3a640276b073321d29373b2ed18d63 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* | QHash security fix (1/2): add global QHash seedGiuseppe D'Angelo2012-04-031-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Algorithmic complexity attacks against hash tables have been known since 2003 (cf. [1, 2]), and they have been left unpatched for years until the 2011 attacks [3] against many libraries / (reference) implementations of programming languages. This patch adds a global integer, to be used as a seed for the hash function itself. The seed is randomly initialized the first time a QHash detaches from shared_null. Right now the seed is not used at all -- another patch will modify qHash to make use of it. [1] http://www.cs.rice.edu/~scrosby/hash/CrosbyWallach_UsenixSec2003.pdf [2] http://perldoc.perl.org/perlsec.html#Algorithmic-Complexity-Attacks [3] http://www.ocert.org/advisories/ocert-2011-003.html Task-number: QTBUG-23529 Change-Id: I7519e4c02b9c2794d1c14079b01330eb356e9c65 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Remove all calls to, and deprecate qMalloc, qRealloc and qFree.Robin Burchell2012-03-311-7/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Callers should just call the standard allocation functions directly. Adding an extra function call onto all basic memory management for the sake of making it instrumentable in rare cases isn't really fair to everyone else. What's more, this wasn't completely reliable, as not everything was using them in a number of places. Memory management can still be overridden using tricks like LD_PRELOAD if needed. Their aligned equivilents cannot be deprecated, as no standard equivilents exist, although investigation into posix_memalign(3) is a possibility for the future. Change-Id: Ic5f74b14be33f8bc188fe7236c55e15c36a23fc7 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* | Remove the -no-stl option from configureThiago Macieira2012-03-284-12/+0
| | | | | | | | | | | | | | | | | | | | | | | | This was decided on the mailing list. See: http://lists.qt-project.org/pipermail/development/2012-March/002442.html http://lists.qt-project.org/pipermail/development/2012-March/002465.html Change-Id: I7681e5cc743b20f6d4e29d2aea45c50df41a0b98 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* | Remove WA_PaintOutsidePaintEventDebao Zhang2012-03-282-6/+0
| | | | | | | | | | | | | | | | | | WA_PaintOutsidePaintEvent is only suggested to be used when porting Qt3 code to Qt 4 under X11 platform. and it has been broken now. Change-Id: Ie4297b2a449f1055ca10ada9efb930e6018b1efb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* | Remove AutoCompatConnectionDebao Zhang2012-03-282-8/+0
| | | | | | | | | | | | | | | | | | | | | | The default type when Qt 3 support is enabled. Same as AutoConnection but will also cause warnings to be output in certain situations. Change-Id: I64bf3c39a740afb716820bfd3173936fda213f4a Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* | Merge master into api_changesKent Hansen2012-03-274-66/+188
|\| | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qisenum.h src/dbus/qdbusconnection_p.h src/widgets/kernel/qwidget.cpp tests/auto/other/qaccessibility/tst_qaccessibility.cpp Change-Id: I85102515d5fec835832cc20ffdc5c1ba578bd01d
| * Remove old code that was for the MIPSpro compilerThiago Macieira2012-03-261-14/+1
| | | | | | | | | | | | | | That compiler is no longer supported Change-Id: I6ff9003a8b986478850ad2e6e6662a44264236d7 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
| * Fix qtnamespace compile break on Mac.Sarah Smith2012-03-261-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Appears as though the QT_NAMESPACE macros are incorrect here. In fact in qisenum.h because the #define is no respecter of a namespace in most of these conditional compile cases they will be ignored effectively. The QT_HEADER also - if qtypetraits.h conditional compile occurs then it will result in adding extern "C" { twice. For the macros invoking them will not cause the extern "C" { to be used anyway, so just remove this altogether. Task-number: QTBUG-24903 Change-Id: I710dc330f58357f395241a0cf3172e41a5864576 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com> Reviewed-by: Glenn Watson <glenn.watson@nokia.com> Reviewed-by: Sarah Jane Smith <sarah.j.smith@nokia.com>
| * Remove the use of a template qUnused function for ICCThiago Macieira2012-03-251-1/+1
| | | | | | | | | | | | | | | | ICC 12 does not seem to need this. Change-Id: I98e9d530e767c4d24424f0c2b5d763f863e85fe4 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
| * Add macros for assuming and unreachable codeThiago Macieira2012-03-243-0/+71
| | | | | | | | | | | | | | | | | | | | Use these macros to tell the compiler about conditions that may happen, so it will generate better code. But do not assume that they will do anything special. Change-Id: I89ec4f65f48a9340ccf5ffc4ae4b8c3d8897c8b1 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| * Update the C++11 support macrosThiago Macieira2012-03-242-45/+115
| | | | | | | | | | | | | | | | Move them all to a central place and document each macro, so we don't give typo names by accident Change-Id: Ia863ac3f7ca82e4d2f8388b3e691a12c7e482283 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | Enable endianness conversions on q(u)int8João Abecasis2012-03-251-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Lack of support for these types is not a real issue as endian conversions on byte-sized types are no-ops. Still, the conversions are useful as they facilitate writing of generic code. They can also be used explicitly as a way to document in code an endian-specific binary format: uchar *data; quint8 tag = qFromLittleEndian<quint8>(data++); quint32 size = qFromLittleEndian<quint32>(data); This commit also adds a test for functions documented in the QtEndian header. Change-Id: I2f6c876ce89d2adb8c03a1c8a25921d225bf6f92 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Fallback implementation of Q_ALIGNOFJoão Abecasis2012-03-231-0/+50
| | | | | | | | | | | | | | | | | | | | | | | | For all practical purposes, the fallback introduced here returns the desired value. Having a fallback enables unconditional use of Q_ALIGNOF. For compilers that provide native support for it, Q_ALIGNOF is otherwise #defined in qcompilerdetection.h. Change-Id: Ie148ca8936cbbf8b80fe87771a14797c39a9d30c Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge "Merge master into api_changes" into refs/staging/api_changesKent Hansen2012-03-234-12/+28
|\ \
| * | Merge master into api_changesKent Hansen2012-03-234-12/+28
| |\| | | | | | | | | | Change-Id: I93551e4d13a1b0815b359b9415060e9089477db1
| | * support relative Sysroot specification in qt.confOswald Buddenhagen2012-03-221-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | permits relocatable qmake installations in, say, $sysroot/hosttools/. note that it makes patently no sense to have a relative Prefix when using a relative Sysroot. Change-Id: I36e5149acb20a885c3cd244bc9d67aa48b01a56f Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
| | * make unspecified/empty HostPrefix fall back to PrefixOswald Buddenhagen2012-03-221-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | this is needed for backwards-compatibility, and generally makes sense. Task-number: QTBUG-24839 Change-Id: I42b008a9dfb43cc2ebe49c8baa2c29f5d6a75897 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
| | * Show correct origin of Q_ASSERT in Windows dialogKai Koehne2012-03-221-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | Display the actual file and line where the Q_ASSERT statement was triggered. Change-Id: I54d72f4c4bd9edee744c0f6e08f31b8e3120f454 Reviewed-by: David Faure <faure@kde.org>
| | * permit explicitly empty qt.conf entriesOswald Buddenhagen2012-03-211-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | this allows expressing "no SettingsPath" cleanly, and makes the internals cleaner. this is marginally behavior-incompatible in that if somebody had Prefix or Data set to an empty string (rather than a dot, which is hinted at by the documentation and commanded by common sense), he would have gotten the binary's directory resp. Prefix, while now it will be just empty. Change-Id: I3c11cc4e8671ffb604d4889389764a9ba9c2e7e6 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
| | * Add IDENTITYPROXYMODEL featuresh kim2012-03-192-0/+12
| | | | | | | | | | | | | | | Change-Id: Ic92165b2ab06e5b5f733bfaf2f7fe908861c0efa Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* | | Remove QWorkspace.Debao Zhang2012-03-236-24/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QWorkspace had been called Q3Workspace before Qt4.0 finally released. In a sense, it is a Qt3 support Widget. And QWorkspace has been deprecated and replaced by QMdiArea at Qt4.3. Change-Id: Iea1bf831c9960c23c2b21d51fdc7c13b303642ea Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* | | Cleanup Q3* itemsDebao Zhang2012-03-234-23/+1
|/ / | | | | | | | | | | | | | | Cleanup Q3* items from QtCore and QtGui modules. Change-Id: Id214a077a50e99d820c84e96e34866492a0130d8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* | Use clang's builtin is_enum, if availableJoão Abecasis2012-03-211-3/+9
| | | | | | | | | | | | Change-Id: Ie0c32b8fd6d3bb02cf6c6b626bb31d57cdcdf497 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Glenn Watson <glenn.watson@nokia.com>
* | Merge master into api_changesKent Hansen2012-03-161-0/+4
|\| | | | | | | | | | | | | | | | | Conflicts: src/corelib/kernel/qmetatype.cpp src/gui/kernel/qplatformsurface_qpa.cpp tests/auto/corelib/tools/qtimeline/qtimeline.pro Change-Id: Iff3fff34eeeb06f02369767ddfce44cfde505178
| * Remove -arch argument and #define QT_ARCH from configuresBradley T. Hughes2012-03-131-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Do not try to detect the host or target architectures using uname or similar, and do not override with the -arch or -host-arch configure arguments. The configures will still accept the -arch and -host-arch arguments, but it ignores them and instead outputs a warning stating that these arguments are obsolete and should not be used. Set QT_ARCH and QT_HOST_ARCH qconfig.pri variables based on the compiler target. This is done by running qmake (twice when cross-compiling) on config.tests/arch/arch.pro, which preprocesses a file that contains all knowns processors. On Windows, configure.exe has never run any config.tests before, and does not currently have a function to run a program and capture its output. Use _popen() to accomplish this (as qmake does for its system() function). This needs to be done after qmake is built, as does the mkspecs/qconfig.pri generation. As a side effect, the configure steps have been slightly re-ordered, but the overall result is the same. The displayConfig() call is moved to just before generating Makefiles, so that it can show the detected architecture(s). Change-Id: I77666c77a93b48848f87648d08e79a42f721683f Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* | Merge remote-tracking branch 'origin/master' into api_changesLars Knoll2012-03-125-9/+507
|\| | | | | | | | | | | | | Conflicts: tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp Change-Id: I884afc3b6d65c6411733a897a1949e19393573a7
| * Add Q_IS_ENUM(), and provide as flag in QMetaType::typeFlags()Glenn Watson2012-03-113-1/+487
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add Q_IS_ENUM() macro to determine if a given type is an enumeration. Use information from that in QMetaType::registerType() to store whether custom registered metatypes are enums or not. This information can then be accessed by calling QMetaType::typeFlags(int type). This is used by the declarative code to determine whether a custom type in a variant can be safely cast to an integer, which is required to allow passing non-local enums as signal/slot params. Change-Id: I9733837f56af201fa3017b4a22b761437a3c0de4 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
| * byteorder: Fix compilation for MIPS and GCC < 4.6.Holger Hans Peter Freyther2012-03-101-0/+6
| | | | | | | | | | | | | | | | | | Use the pre-processor macros to detect the byte order. This is how it is done for ARM and other platforms. Use the variant of the macro with the most underscores to match our ARM detection. Change-Id: I7d2b34bf45a7f3979b44a1fe2e95f678152a5dcd Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
| * byteorder: Improve the implementation comments for auto-detectHolger Hans Peter Freyther2012-03-092-8/+14
| | | | | | | | | | | | | | | | | | | | Parts of the auto-detection is using __BYTE_ORDER__. This pre-processor macro was added in GCC 4.6. Document that in the auto-detection code. Remove the misleading error message in qsysinfo.h. Change-Id: I66430ba1c9a1cdf476889ae6d5f3ca476243e000 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
| * misc: Fix some random typos and grammar while reading code.Holger Hans Peter Freyther2012-03-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Typos: recieve -> receive descrived -> describe Grammar: this types -> these types Change-Id: Iedacc51a6322996f423ac9472af0a597424a4fed Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* | QVariant: fix HasIsNullMethod for final classesMarc Mutz2012-03-081-0/+6
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | HasIsNullMethod uses the accepted C++98 idiom to check for members that might be inherited from baseclasses. The technique, however, requires inheriting from the type-under-test, which fails for C++11 final classes. Fortunately, under C++11 we have much better support for static type introspection: sfinae for expressions. We use this here (see decltype() use in qvariant_p.h) to write a C++11 version of HasIsNullMethod that works with final classes, too. However, since this technique required decltype() support in the compiler, Q_DECL_FINAL can no longer be used for both method and class markup. So we declare a new Q_DECL_FINAL_CLASS which is only set iff the compiler supports decltype(), too. MSVC 2005 and 2008 support a non-standard, but sufficiently compatible, version of override/final, but no decltype(). A later patch will use MSVC 'override/'sealed' to implement Q_DECL_{OVERRIDE,FINAL} for these compilers, but I currently don't see a version of HasIsNullMethod that could support these two, so the split off of Q_DECL_FINAL_CLASS is in anticipation of that commit. If someone _does_ find an implementation of HasIsNullMethod that works on MSVC2005 and 2008 sealed classes, then it's a simple matter of s/Q_DECL_FINAL_CLASS/Q_DECL_FINAL/g. This code has been tested on GCC 4.7 (prerelease) and GCC 4.8 (prerelease). Change-Id: I8700c8307d79a74d45fef0aec1c6027b4a922a43 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fixed warnings from arm builds with -WundefRohan McGovern2012-03-071-3/+3
| | | | | | | | | Do not use the value of a macro before verifying that the macro is defined. Change-Id: I36bebe37da5f4e5e7af1e423b7f2b18091e35707 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>