summaryrefslogtreecommitdiffstats
path: root/src/kernel/qvariant.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/qvariant.h')
-rw-r--r--src/kernel/qvariant.h396
1 files changed, 396 insertions, 0 deletions
diff --git a/src/kernel/qvariant.h b/src/kernel/qvariant.h
new file mode 100644
index 0000000..b2cab8d
--- /dev/null
+++ b/src/kernel/qvariant.h
@@ -0,0 +1,396 @@
+/****************************************************************************
+**
+** Definition of QVariant class
+**
+** Created : 990414
+**
+** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
+**
+** This file is part of the kernel module of the Qt GUI Toolkit.
+**
+** This file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free
+** Software Foundation and appearing in the files LICENSE.GPL2
+** and LICENSE.GPL3 included in the packaging of this file.
+** Alternatively you may (at your option) use any later version
+** of the GNU General Public License if such license has been
+** publicly approved by Trolltech ASA (or its successors, if any)
+** and the KDE Free Qt Foundation.
+**
+** Please review the following information to ensure GNU General
+** Public Licensing requirements will be met:
+** http://trolltech.com/products/qt/licenses/licensing/opensource/.
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
+** or contact the sales department at sales@trolltech.com.
+**
+** This file may be used under the terms of the Q Public License as
+** defined by Trolltech ASA and appearing in the file LICENSE.QPL
+** included in the packaging of this file. Licensees holding valid Qt
+** Commercial licenses may use this file in accordance with the Qt
+** Commercial License Agreement provided with the Software.
+**
+** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
+** herein.
+**
+**********************************************************************/
+
+#ifndef QVARIANT_H
+#define QVARIANT_H
+
+#ifndef QT_H
+#include "qstring.h"
+#endif // QT_H
+
+#ifndef QT_NO_VARIANT
+class QString;
+class QCString;
+class QFont;
+class QPixmap;
+class QBrush;
+class QRect;
+class QPoint;
+class QImage;
+class QSize;
+class QColor;
+class QPalette;
+class QColorGroup;
+class QIconSet;
+class QDataStream;
+class QPointArray;
+class QRegion;
+class QBitmap;
+class QCursor;
+class QStringList;
+class QSizePolicy;
+class QDate;
+class QTime;
+class QDateTime;
+class QBitArray;
+class QKeySequence;
+class QPen;
+// Some headers rejected after QVariant declaration for GCC 2.7.* compatibility
+class QVariant;
+#ifndef QT_NO_TEMPLATE_VARIANT
+template <class T> class QValueList;
+template <class T> class QValueListConstIterator;
+template <class T> class QValueListNode;
+template <class Key, class T> class QMap;
+template <class Key, class T> class QMapConstIterator;
+#endif
+
+class Q_EXPORT QVariant
+{
+public:
+ enum Type {
+ Invalid,
+ Map,
+ List,
+ String,
+ StringList,
+ Font,
+ Pixmap,
+ Brush,
+ Rect,
+ Size,
+ Color,
+ Palette,
+ ColorGroup,
+ IconSet,
+ Point,
+ Image,
+ Int,
+ UInt,
+ Bool,
+ Double,
+ CString,
+ PointArray,
+ Region,
+ Bitmap,
+ Cursor,
+ SizePolicy,
+ Date,
+ Time,
+ DateTime,
+ ByteArray,
+ BitArray,
+ KeySequence,
+ Pen,
+ LongLong,
+ ULongLong
+ };
+
+ QVariant();
+ ~QVariant();
+ QVariant( const QVariant& );
+#ifndef QT_NO_DATASTREAM
+ QVariant( QDataStream& s );
+#endif
+ QVariant( const QString& );
+ QVariant( const QCString& );
+ QVariant( const char* );
+#ifndef QT_NO_STRINGLIST
+ QVariant( const QStringList& );
+#endif
+ QVariant( const QFont& );
+ QVariant( const QPixmap& );
+ QVariant( const QImage& );
+ QVariant( const QBrush& );
+ QVariant( const QPoint& );
+ QVariant( const QRect& );
+ QVariant( const QSize& );
+ QVariant( const QColor& );
+ QVariant( const QPalette& );
+ QVariant( const QColorGroup& );
+ QVariant( const QIconSet& );
+ QVariant( const QPointArray& );
+ QVariant( const QRegion& );
+ QVariant( const QBitmap& );
+ QVariant( const QCursor& );
+ QVariant( const QDate& );
+ QVariant( const QTime& );
+ QVariant( const QDateTime& );
+ QVariant( const QByteArray& );
+ QVariant( const QBitArray& );
+#ifndef QT_NO_ACCEL
+ QVariant( const QKeySequence& );
+#endif
+ QVariant( const QPen& );
+#ifndef QT_NO_TEMPLATE_VARIANT
+ QVariant( const QValueList<QVariant>& );
+ QVariant( const QMap<QString,QVariant>& );
+#endif
+ QVariant( int );
+ QVariant( uint );
+ QVariant( Q_LLONG );
+ QVariant( Q_ULLONG );
+ // ### Problems on some compilers ?
+ QVariant( bool, int );
+ QVariant( double );
+ QVariant( QSizePolicy );
+
+ QVariant& operator= ( const QVariant& );
+ bool operator==( const QVariant& ) const;
+ bool operator!=( const QVariant& ) const;
+
+ Type type() const;
+ const char* typeName() const;
+
+ bool canCast( Type ) const;
+ bool cast( Type );
+
+ bool isValid() const;
+ bool isNull() const;
+
+ void clear();
+
+ const QString toString() const;
+ const QCString toCString() const;
+#ifndef QT_NO_STRINGLIST
+ const QStringList toStringList() const;
+#endif
+ const QFont toFont() const;
+ const QPixmap toPixmap() const;
+ const QImage toImage() const;
+ const QBrush toBrush() const;
+ const QPoint toPoint() const;
+ const QRect toRect() const;
+ const QSize toSize() const;
+ const QColor toColor() const;
+ const QPalette toPalette() const;
+ const QColorGroup toColorGroup() const;
+ const QIconSet toIconSet() const;
+ const QPointArray toPointArray() const;
+ const QBitmap toBitmap() const;
+ const QRegion toRegion() const;
+ const QCursor toCursor() const;
+ const QDate toDate() const;
+ const QTime toTime() const;
+ const QDateTime toDateTime() const;
+ const QByteArray toByteArray() const;
+ const QBitArray toBitArray() const;
+#ifndef QT_NO_ACCEL
+ const QKeySequence toKeySequence() const;
+#endif
+ const QPen toPen() const;
+ int toInt( bool * ok=0 ) const;
+ uint toUInt( bool * ok=0 ) const;
+ Q_LLONG toLongLong( bool * ok=0 ) const;
+ Q_ULLONG toULongLong( bool * ok=0 ) const;
+ bool toBool() const;
+ double toDouble( bool * ok=0 ) const;
+#ifndef QT_NO_TEMPLATE_VARIANT
+ const QValueList<QVariant> toList() const;
+ const QMap<QString,QVariant> toMap() const;
+#endif
+ QSizePolicy toSizePolicy() const;
+
+#ifndef QT_NO_TEMPLATE_VARIANT
+ QValueListConstIterator<QString> stringListBegin() const;
+ QValueListConstIterator<QString> stringListEnd() const;
+ QValueListConstIterator<QVariant> listBegin() const;
+ QValueListConstIterator<QVariant> listEnd() const;
+ QMapConstIterator<QString,QVariant> mapBegin() const;
+ QMapConstIterator<QString,QVariant> mapEnd() const;
+ QMapConstIterator<QString,QVariant> mapFind( const QString& ) const;
+#endif
+ QString& asString();
+ QCString& asCString();
+#ifndef QT_NO_STRINGLIST
+ QStringList& asStringList();
+#endif
+ QFont& asFont();
+ QPixmap& asPixmap();
+ QImage& asImage();
+ QBrush& asBrush();
+ QPoint& asPoint();
+ QRect& asRect();
+ QSize& asSize();
+ QColor& asColor();
+ QPalette& asPalette();
+ QColorGroup& asColorGroup();
+ QIconSet& asIconSet();
+ QPointArray& asPointArray();
+ QBitmap& asBitmap();
+ QRegion& asRegion();
+ QCursor& asCursor();
+ QDate& asDate();
+ QTime& asTime();
+ QDateTime& asDateTime();
+ QByteArray& asByteArray();
+ QBitArray& asBitArray();
+#ifndef QT_NO_ACCEL
+ QKeySequence& asKeySequence();
+#endif
+ QPen& asPen();
+ int& asInt();
+ uint& asUInt();
+ Q_LLONG& asLongLong();
+ Q_ULLONG& asULongLong();
+ bool& asBool();
+ double& asDouble();
+#ifndef QT_NO_TEMPLATE_VARIANT
+ QValueList<QVariant>& asList();
+ QMap<QString,QVariant>& asMap();
+#endif
+ QSizePolicy& asSizePolicy();
+
+#ifndef QT_NO_DATASTREAM
+ void load( QDataStream& );
+ void save( QDataStream& ) const;
+#endif
+ static const char* typeToName( Type typ );
+ static Type nameToType( const char* name );
+
+private:
+ void detach();
+
+ class Private : public QShared
+ {
+ public:
+ Private();
+ Private( Private* );
+ ~Private();
+
+ void clear();
+
+ Type typ;
+ union
+ {
+ uint u;
+ int i;
+ Q_LLONG ll;
+ Q_ULLONG ull;
+ bool b;
+ double d;
+ void *ptr;
+ } value;
+ uint is_null : 1; // ## 4.0 merge with typ
+ };
+
+ Private* d;
+
+public:
+ void* rawAccess( void* ptr = 0, Type typ = Invalid, bool deepCopy = FALSE );
+};
+
+// down here for GCC 2.7.* compatibility
+#ifndef QT_H
+#include "qvaluelist.h"
+#include "qstringlist.h"
+#include "qmap.h"
+#endif // QT_H
+
+inline QVariant::Type QVariant::type() const
+{
+ return d->typ;
+}
+
+inline bool QVariant::isValid() const
+{
+ return (d->typ != Invalid);
+}
+
+#ifndef QT_NO_TEMPLATE_VARIANT
+inline QValueListConstIterator<QString> QVariant::stringListBegin() const
+{
+ if ( d->typ != StringList )
+ return QValueListConstIterator<QString>();
+ return ((const QStringList*)d->value.ptr)->begin();
+}
+
+inline QValueListConstIterator<QString> QVariant::stringListEnd() const
+{
+ if ( d->typ != StringList )
+ return QValueListConstIterator<QString>();
+ return ((const QStringList*)d->value.ptr)->end();
+}
+
+inline QValueListConstIterator<QVariant> QVariant::listBegin() const
+{
+ if ( d->typ != List )
+ return QValueListConstIterator<QVariant>();
+ return ((const QValueList<QVariant>*)d->value.ptr)->begin();
+}
+
+inline QValueListConstIterator<QVariant> QVariant::listEnd() const
+{
+ if ( d->typ != List )
+ return QValueListConstIterator<QVariant>();
+ return ((const QValueList<QVariant>*)d->value.ptr)->end();
+}
+
+inline QMapConstIterator<QString,QVariant> QVariant::mapBegin() const
+{
+ if ( d->typ != Map )
+ return QMapConstIterator<QString,QVariant>();
+ return ((const QMap<QString,QVariant>*)d->value.ptr)->begin();
+}
+
+inline QMapConstIterator<QString,QVariant> QVariant::mapEnd() const
+{
+ if ( d->typ != Map )
+ return QMapConstIterator<QString,QVariant>();
+ return ((const QMap<QString,QVariant>*)d->value.ptr)->end();
+}
+
+inline QMapConstIterator<QString,QVariant> QVariant::mapFind( const QString& key ) const
+{
+ if ( d->typ != Map )
+ return QMapConstIterator<QString,QVariant>();
+ return ((const QMap<QString,QVariant>*)d->value.ptr)->find( key );
+}
+#endif
+
+#ifndef QT_NO_DATASTREAM
+Q_EXPORT QDataStream& operator>> ( QDataStream& s, QVariant& p );
+Q_EXPORT QDataStream& operator<< ( QDataStream& s, const QVariant& p );
+Q_EXPORT QDataStream& operator>> ( QDataStream& s, QVariant::Type& p );
+Q_EXPORT QDataStream& operator<< ( QDataStream& s, const QVariant::Type p );
+#endif
+
+#endif //QT_NO_VARIANT
+#endif // QVARIANT_H