diff options
Diffstat (limited to 'tqtinterface/qt4/src/kernel/tqvariant.h')
-rw-r--r-- | tqtinterface/qt4/src/kernel/tqvariant.h | 642 |
1 files changed, 642 insertions, 0 deletions
diff --git a/tqtinterface/qt4/src/kernel/tqvariant.h b/tqtinterface/qt4/src/kernel/tqvariant.h new file mode 100644 index 0000000..5fb5e65 --- /dev/null +++ b/tqtinterface/qt4/src/kernel/tqvariant.h @@ -0,0 +1,642 @@ +/**************************************************************************** +** +** Definition of TQVariant class +** +** Created : 990414 +** +** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA. +** +** This file is part of the kernel module of the TQt 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 TQt 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.TQPL +** included in the packaging of this file. Licensees holding valid TQt +** Commercial licenses may use this file in accordance with the TQt +** 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 TQVARIANT_H +#define TQVARIANT_H + +#include "tqtglobaldefines.h" +#include "tqnamespace.h" + +#ifndef TQT_H +#include "tqstring.h" +#endif // TQT_H + +#ifdef USE_QT4 + +#include "tqvaluelist.h" +#include "tqstringlist.h" +#include "tqmap.h" +#include <Qt/qvariant.h> + +#endif // USE_QT4 + +#ifndef TQT_NO_VARIANT +class TQString; +class TQCString; +class TQFont; +class TQPixmap; +class TQBrush; +class TQRect; +class TQPoint; +class TQImage; +class TQSize; +class TQColor; +class TQPalette; +class TQColorGroup; +class TQIconSet; +class TQDataStream; +class TQPointArray; +class TQRegion; +class TQBitmap; +class TQCursor; +class TQStringList; +class TQSizePolicy; +class TQDate; +class TQTime; +class TQDateTime; +class TQBitArray; +class TQKeySequence; +class TQPen; +// Some headers rejected after TQVariant declaration for GCC 2.7.* compatibility +class TQVariant; +#ifndef TQT_NO_TEMPLATE_VARIANT +template <class T> class TQValueList; +template <class T> class TQValueListConstIterator; +template <class T> class TQValueListNode; +template <class Key, class T> class TQMap; +template <class Key, class T> class TQMapConstIterator; +#endif + +#ifdef USE_QT4 + +#include "tqtenuminheritance.h" + +class TQ_EXPORT TQVariant : public QVariant, virtual public TQt +{ +public: + // [FIXME] Should these line up with a Qt4 structure? + // Also, make sure they don't collide with QVariant::Type! + enum TQV_NewTypes { + CString = (QVariant::Type)150, + ColorGroup = (QVariant::Type)151, + IconSet = (QVariant::Type)152, + PointArray = (QVariant::Type)153 + }; +// typedef TQTInheritEnum< TQV_NewTypes, QVariant::Type > Type; + typedef TQTInheritEnum< TQV_NewTypes, QVariant::Type > TQType; + + TQVariant() : QVariant() {} + TQVariant( const QVariant &s ); +#ifndef TQT_NO_DATASTREAM + TQVariant( TQDataStream &s ); +#endif + TQVariant( const TQString &s ); + TQVariant( const TQCString &s ); + TQVariant( const char *s ); +#ifndef TQT_NO_STRINGLIST + TQVariant( const TQStringList &s ); +#endif + TQVariant( const TQFont &s ); + TQVariant( const TQPixmap &s ); + TQVariant( const TQImage &s ); + TQVariant( const TQBrush &s ); + TQVariant( const TQPoint &s ); + TQVariant( const TQRect &s ); + TQVariant( const TQSize &s ); + TQVariant( const TQColor &s ); + TQVariant( const TQPalette &s ); + TQVariant( const TQColorGroup &s ); + TQVariant( const TQIconSet &s ); + TQVariant( const TQPointArray &s ); + TQVariant( const TQRegion &s ); + TQVariant( const TQBitmap &s ); + TQVariant( const TQCursor &s ); + TQVariant( const TQDate &s ); + TQVariant( const TQTime &s ); + TQVariant( const TQDateTime &s ); + TQVariant( const TQByteArray &s ); + TQVariant( const TQBitArray &s ); +#ifndef TQT_NO_ACCEL + TQVariant( const TQKeySequence &s ); +#endif + TQVariant( const TQPen &s ); +#ifndef TQT_NO_TEMPLATE_VARIANT + TQVariant( const TQValueList<TQVariant>&s ); + TQVariant( const TQMap<TQString,TQVariant>&s ); +#endif + TQVariant( int s ) : QVariant( s ) {} + TQVariant( uint s ) : QVariant( s ) {} + TQVariant( TQ_LLONG s ) : QVariant( s ) {} + TQVariant( TQ_ULLONG s ) : QVariant( s ) {} +// TQVariant( bool s, int t ) : QVariant( s, t ) {} + TQVariant( bool s, int t ) : QVariant( s ) { TQ_UNUSED(t); } + TQVariant( double s ) : QVariant( s ) {} + TQVariant( TQSizePolicy s ); + + const TQFont toFont() const; + + inline bool canCast(Type t) const { return canConvert(t); } + inline bool cast(Type t) { return convert(t); } + +#ifndef TQT_NO_TEMPLATE_VARIANT + TQValueListConstIterator<TQString> stringListBegin() const; + TQValueListConstIterator<TQString> stringListEnd() const; + TQValueListConstIterator<TQVariant> listBegin() const; + TQValueListConstIterator<TQVariant> listEnd() const; + TQMapConstIterator<TQString,TQVariant> mapBegin() const; + TQMapConstIterator<TQString,TQVariant> mapEnd() const; + TQMapConstIterator<TQString,TQVariant> mapFind( const TQString& ) const; +#endif + + TQString& asString(); + TQCString& asCString(); +#ifndef TQT_NO_STRINGLIST + TQStringList& asStringList(); +#endif + TQFont& asFont(); + TQPixmap& asPixmap(); + TQImage& asImage(); + TQBrush& asBrush(); + TQPoint& asPoint(); + TQRect& asRect(); + TQSize& asSize(); + TQColor& asColor(); + TQPalette& asPalette(); + TQColorGroup& asColorGroup(); + TQIconSet& asIconSet(); + TQPointArray& asPointArray(); + TQBitmap& asBitmap(); + TQRegion& asRegion(); + TQCursor& asCursor(); + TQDate& asDate(); + TQTime& asTime(); + TQDateTime& asDateTime(); + TQByteArray& asByteArray(); + TQBitArray& asBitArray(); +#ifndef TQT_NO_ACCEL + TQKeySequence& asKeySequence(); +#endif + TQPen& asPen(); + int& asInt(); + uint& asUInt(); + TQ_LLONG& asLongLong(); + TQ_ULLONG& asULongLong(); + bool& asBool(); + double& asDouble(); +#ifndef TQT_NO_TEMPLATE_VARIANT + TQValueList<TQVariant>& asList(); + TQMap<TQString,TQVariant>& asMap(); +#endif + TQSizePolicy& asSizePolicy(); + + const TQString toString() const; + const TQCString toCString() const; +#ifndef TQT_NO_STRINGLIST + const TQStringList toStringList() const; +#endif +// const TQFont toFont() const; + const TQPixmap toPixmap() const; + const TQImage toImage() const; + const TQBrush toBrush() const; + const TQPoint toPoint() const; + const TQRect toRect() const; + const TQSize toSize() const; + const TQColor toColor() const; + const TQPalette toPalette() const; + const TQColorGroup toColorGroup() const; + const TQIconSet toIconSet() const; + const TQPointArray toPointArray() const; + const TQBitmap toBitmap() const; + const TQRegion toRegion() const; + const TQCursor toCursor() const; + const TQDate toDate() const; + const TQTime toTime() const; + const TQDateTime toDateTime() const; + const TQByteArray toByteArray() const; + const TQBitArray toBitArray() const; +#ifndef TQT_NO_ACCEL + const TQKeySequence toKeySequence() const; +#endif + const TQPen toPen() const; +// int toInt( bool * ok=0 ) const; +// uint toUInt( bool * ok=0 ) const; +// TQ_LLONG toLongLong( bool * ok=0 ) const; +// TQ_ULLONG toULongLong( bool * ok=0 ) const; +// bool toBool() const; +// double toDouble( bool * ok=0 ) const; +#ifndef TQT_NO_TEMPLATE_VARIANT + const TQValueList<TQVariant> toList() const; + const TQMap<TQString,TQVariant> toMap() const; +#endif + TQSizePolicy toSizePolicy() const; + +// using QVariant::operator=; +// TQVariant& operator= ( const QVariant& ); +// inline TQVariant& operator= ( const QVariant&v ) { +// QVariant& ref = QVariant::operator=(v); +// return static_cast<TQVariant*>(&ref); +// } + +public: + // Interoperability + static const TQVariant& convertFromQVariant( QVariant& qvr ); +}; + +// Interoperability +inline static const TQVariant& convertFromQVariant( const QVariant& qvr ) { + return (*static_cast<const TQVariant*>(&qvr)); +} + +#ifndef TQT_NO_TEMPLATE_VARIANT +inline TQValueListConstIterator<TQString> TQVariant::stringListBegin() const +{ + if ( d.type != StringList ) + return TQValueListConstIterator<TQString>(); + return ((const TQStringList*)d.data.ptr)->begin(); +} + +inline TQValueListConstIterator<TQString> TQVariant::stringListEnd() const +{ + if ( d.type != StringList ) + return TQValueListConstIterator<TQString>(); + return ((const TQStringList*)d.data.ptr)->end(); +} + +inline TQValueListConstIterator<TQVariant> TQVariant::listBegin() const +{ + if ( d.type != List ) + return TQValueListConstIterator<TQVariant>(); + return ((const TQValueList<TQVariant>*)d.data.ptr)->begin(); +} + +inline TQValueListConstIterator<TQVariant> TQVariant::listEnd() const +{ + if ( d.type != List ) + return TQValueListConstIterator<TQVariant>(); + return ((const TQValueList<TQVariant>*)d.data.ptr)->end(); +} + +inline TQMapConstIterator<TQString,TQVariant> TQVariant::mapBegin() const +{ + if ( d.type != Map ) + return TQMapConstIterator<TQString,TQVariant>(); + return ((const TQMap<TQString,TQVariant>*)d.data.ptr)->begin(); +} + +inline TQMapConstIterator<TQString,TQVariant> TQVariant::mapEnd() const +{ + if ( d.type != Map ) + return TQMapConstIterator<TQString,TQVariant>(); + return ((const TQMap<TQString,TQVariant>*)d.data.ptr)->end(); +} + +inline TQMapConstIterator<TQString,TQVariant> TQVariant::mapFind( const TQString& key ) const +{ + if ( d.type != Map ) + return TQMapConstIterator<TQString,TQVariant>(); + return ((const TQMap<TQString,TQVariant>*)d.data.ptr)->tqfind( key ); +} +#endif + +#else // USE_QT4 + +class TQ_EXPORT TQVariant +{ +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 + }; + + TQVariant(); + ~TQVariant(); + TQVariant( const TQVariant& ); +#ifndef TQT_NO_DATASTREAM + TQVariant( TQDataStream& s ); +#endif + TQVariant( const TQString& ); + TQVariant( const TQCString& ); + TQVariant( const char* ); +#ifndef TQT_NO_STRINGLIST + TQVariant( const TQStringList& ); +#endif + TQVariant( const TQFont& ); + TQVariant( const TQPixmap& ); + TQVariant( const TQImage& ); + TQVariant( const TQBrush& ); + TQVariant( const TQPoint& ); + TQVariant( const TQRect& ); + TQVariant( const TQSize& ); + TQVariant( const TQColor& ); + TQVariant( const TQPalette& ); + TQVariant( const TQColorGroup& ); + TQVariant( const TQIconSet& ); + TQVariant( const TQPointArray& ); + TQVariant( const TQRegion& ); + TQVariant( const TQBitmap& ); + TQVariant( const TQCursor& ); + TQVariant( const TQDate& ); + TQVariant( const TQTime& ); + TQVariant( const TQDateTime& ); + TQVariant( const TQByteArray& ); + TQVariant( const TQBitArray& ); +#ifndef TQT_NO_ACCEL + TQVariant( const TQKeySequence& ); +#endif + TQVariant( const TQPen& ); +#ifndef TQT_NO_TEMPLATE_VARIANT + TQVariant( const TQValueList<TQVariant>& ); + TQVariant( const TQMap<TQString,TQVariant>& ); +#endif + TQVariant( int ); + TQVariant( uint ); + TQVariant( TQ_LLONG ); + TQVariant( TQ_ULLONG ); + // ### Problems on some compilers ? + TQVariant( bool, int ); + TQVariant( double ); + TQVariant( TQSizePolicy ); + + TQVariant& operator= ( const TQVariant& ); + bool operator==( const TQVariant& ) const; + bool operator!=( const TQVariant& ) const; + + Type type() const; + const char* typeName() const; + + bool canCast( Type ) const; + bool cast( Type ); + + bool isValid() const; + bool isNull() const; + + void clear(); + + const TQString toString() const; + const TQCString toCString() const; +#ifndef TQT_NO_STRINGLIST + const TQStringList toStringList() const; +#endif + const TQFont toFont() const; + const TQPixmap toPixmap() const; + const TQImage toImage() const; + const TQBrush toBrush() const; + const TQPoint toPoint() const; + const TQRect toRect() const; + const TQSize toSize() const; + const TQColor toColor() const; + const TQPalette toPalette() const; + const TQColorGroup toColorGroup() const; + const TQIconSet toIconSet() const; + const TQPointArray toPointArray() const; + const TQBitmap toBitmap() const; + const TQRegion toRegion() const; + const TQCursor toCursor() const; + const TQDate toDate() const; + const TQTime toTime() const; + const TQDateTime toDateTime() const; + const TQByteArray toByteArray() const; + const TQBitArray toBitArray() const; +#ifndef TQT_NO_ACCEL + const TQKeySequence toKeySequence() const; +#endif + const TQPen toPen() const; + int toInt( bool * ok=0 ) const; + uint toUInt( bool * ok=0 ) const; + TQ_LLONG toLongLong( bool * ok=0 ) const; + TQ_ULLONG toULongLong( bool * ok=0 ) const; + bool toBool() const; + double toDouble( bool * ok=0 ) const; +#ifndef TQT_NO_TEMPLATE_VARIANT + const TQValueList<TQVariant> toList() const; + const TQMap<TQString,TQVariant> toMap() const; +#endif + TQSizePolicy toSizePolicy() const; + +#ifndef TQT_NO_TEMPLATE_VARIANT + TQValueListConstIterator<TQString> stringListBegin() const; + TQValueListConstIterator<TQString> stringListEnd() const; + TQValueListConstIterator<TQVariant> listBegin() const; + TQValueListConstIterator<TQVariant> listEnd() const; + TQMapConstIterator<TQString,TQVariant> mapBegin() const; + TQMapConstIterator<TQString,TQVariant> mapEnd() const; + TQMapConstIterator<TQString,TQVariant> mapFind( const TQString& ) const; +#endif + TQString& asString(); + TQCString& asCString(); +#ifndef TQT_NO_STRINGLIST + TQStringList& asStringList(); +#endif + TQFont& asFont(); + TQPixmap& asPixmap(); + TQImage& asImage(); + TQBrush& asBrush(); + TQPoint& asPoint(); + TQRect& asRect(); + TQSize& asSize(); + TQColor& asColor(); + TQPalette& asPalette(); + TQColorGroup& asColorGroup(); + TQIconSet& asIconSet(); + TQPointArray& asPointArray(); + TQBitmap& asBitmap(); + TQRegion& asRegion(); + TQCursor& asCursor(); + TQDate& asDate(); + TQTime& asTime(); + TQDateTime& asDateTime(); + TQByteArray& asByteArray(); + TQBitArray& asBitArray(); +#ifndef TQT_NO_ACCEL + TQKeySequence& asKeySequence(); +#endif + TQPen& asPen(); + int& asInt(); + uint& asUInt(); + TQ_LLONG& asLongLong(); + TQ_ULLONG& asULongLong(); + bool& asBool(); + double& asDouble(); +#ifndef TQT_NO_TEMPLATE_VARIANT + TQValueList<TQVariant>& asList(); + TQMap<TQString,TQVariant>& asMap(); +#endif + TQSizePolicy& asSizePolicy(); + +#ifndef TQT_NO_DATASTREAM + void load( TQDataStream& ); + void save( TQDataStream& ) const; +#endif + static const char* typeToName( Type typ ); + static Type nameToType( const char* name ); + +private: + void detach(); + + class Private : public TQShared + { + public: + Private(); + Private( Private* ); + ~Private(); + + void clear(); + + Type typ; + union + { + uint u; + int i; + TQ_LLONG ll; + TQ_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 TQT_H +#include "tqvaluelist.h" +#include "tqstringlist.h" +#include "tqmap.h" +#endif // TQT_H + +inline TQVariant::Type TQVariant::type() const +{ + return d->typ; +} + +inline bool TQVariant::isValid() const +{ + return (d->typ != Invalid); +} + +#ifndef TQT_NO_TEMPLATE_VARIANT +inline TQValueListConstIterator<TQString> TQVariant::stringListBegin() const +{ + if ( d->typ != StringList ) + return TQValueListConstIterator<TQString>(); + return ((const TQStringList*)d->value.ptr)->begin(); +} + +inline TQValueListConstIterator<TQString> TQVariant::stringListEnd() const +{ + if ( d->typ != StringList ) + return TQValueListConstIterator<TQString>(); + return ((const TQStringList*)d->value.ptr)->end(); +} + +inline TQValueListConstIterator<TQVariant> TQVariant::listBegin() const +{ + if ( d->typ != List ) + return TQValueListConstIterator<TQVariant>(); + return ((const TQValueList<TQVariant>*)d->value.ptr)->begin(); +} + +inline TQValueListConstIterator<TQVariant> TQVariant::listEnd() const +{ + if ( d->typ != List ) + return TQValueListConstIterator<TQVariant>(); + return ((const TQValueList<TQVariant>*)d->value.ptr)->end(); +} + +inline TQMapConstIterator<TQString,TQVariant> TQVariant::mapBegin() const +{ + if ( d->typ != Map ) + return TQMapConstIterator<TQString,TQVariant>(); + return ((const TQMap<TQString,TQVariant>*)d->value.ptr)->begin(); +} + +inline TQMapConstIterator<TQString,TQVariant> TQVariant::mapEnd() const +{ + if ( d->typ != Map ) + return TQMapConstIterator<TQString,TQVariant>(); + return ((const TQMap<TQString,TQVariant>*)d->value.ptr)->end(); +} + +inline TQMapConstIterator<TQString,TQVariant> TQVariant::mapFind( const TQString& key ) const +{ + if ( d->typ != Map ) + return TQMapConstIterator<TQString,TQVariant>(); + return ((const TQMap<TQString,TQVariant>*)d->value.ptr)->tqfind( key ); +} +#endif + +#ifndef TQT_NO_DATASTREAM +TQ_EXPORT TQDataStream& operator>> ( TQDataStream& s, TQVariant& p ); +TQ_EXPORT TQDataStream& operator<< ( TQDataStream& s, const TQVariant& p ); +TQ_EXPORT TQDataStream& operator>> ( TQDataStream& s, TQVariant::Type& p ); +TQ_EXPORT TQDataStream& operator<< ( TQDataStream& s, const TQVariant::Type p ); +#endif + +#endif // TQT_NO_VARIANT +#endif // USE_QT4 +#endif // TQVARIANT_H |