From 52f8a1d18175ad99fbc01d2d9b7b9e822573cac3 Mon Sep 17 00:00:00 2001 From: tpearson Date: Thu, 12 Aug 2010 18:31:45 +0000 Subject: Qt3 compilation fix git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/dependencies/tqtinterface@1162810 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- qtinterface/tqvariant.cpp | 106 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) (limited to 'qtinterface/tqvariant.cpp') diff --git a/qtinterface/tqvariant.cpp b/qtinterface/tqvariant.cpp index 3672da7..981922e 100644 --- a/qtinterface/tqvariant.cpp +++ b/qtinterface/tqvariant.cpp @@ -21,3 +21,109 @@ Boston, MA 02110-1301, USA. #include #include + +#include + +#ifdef USE_QT4 + +// This is taken straight from +#ifdef Q_CC_SUN // Sun CC picks the wrong overload, so introduce awful hack + +template +inline T *v_cast(const QVariant::Private *nd, T * = 0) +{ + QVariant::Private *d = const_cast(nd); + return ((sizeof(T) > sizeof(QVariant::Private::Data)) + ? static_cast(d->data.shared->ptr) + : static_cast(static_cast(&d->data.c))); +} + +#else // every other compiler in this world + +template +inline const T *v_cast(const QVariant::Private *d, T * = 0) +{ + return ((sizeof(T) > sizeof(QVariant::Private::Data)) + ? static_cast(d->data.shared->ptr) + : static_cast(static_cast(&d->data.c))); +} + +template +inline T *v_cast(QVariant::Private *d, T * = 0) +{ + return ((sizeof(T) > sizeof(QVariant::Private::Data)) + ? static_cast(d->data.shared->ptr) + : static_cast(static_cast(&d->data.c))); +} + +#endif + +template +inline T qVariantToHelper(const QVariant::Private &d, QVariant::Type t, + const QVariant::Handler *handler, T * = 0) +{ + if (d.type == t) + return *v_cast(&d); + + T ret; + handler->convert(&d, t, &ret, 0); + return ret; +} + +QFont QVariant::toFont() const { + return qVariantToHelper(d, Font, handler); +} + +QColor QVariant::toColor() const { + return qVariantToHelper(d, Color, handler); +} + +QCursor QVariant::toCursor() const { + return qVariantToHelper(d, Cursor, handler); +} + +QBitmap QVariant::toBitmap() const { + return qVariantToHelper(d, Bitmap, handler); +} + +Q3PointArray QVariant::toPointArray() const { + return qVariantToHelper(d, PointArray, handler); +} + +QRegion QVariant::toRegion() const { + return qVariantToHelper(d, Region, handler); +} + +QPixmap QVariant::toPixmap() const { + return qVariantToHelper(d, Pixmap, handler); +} + +QImage QVariant::toImage() const { + return qVariantToHelper(d, Image, handler); +} + +QBrush QVariant::toBrush() const { + return qVariantToHelper(d, Brush, handler); +} + +QPalette QVariant::toPalette() const { + return qVariantToHelper(d, Palette, handler); +} + +QColorGroup QVariant::toColorGroup() const { + return qVariantToHelper(d, ColorGroup, handler); +} + +QIconSet QVariant::toIconSet() const { + return qVariantToHelper(d, IconSet, handler); +} + +QFont QVariant::asFont() { + return toFont(); +} + +QColor QVariant::asColor() { + return toColor(); +} + +#endif // USE_QT4 \ No newline at end of file -- cgit v1.2.1