/**************************************************************************** ** ** Definition of TQVariant class ** ** Created : 990414 ** ** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. ** ** 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 #ifndef QT_H #include "ntqstring.h" #endif // QT_H #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 TQValueList; template class TQValueListConstIterator; template class TQValueListNode; template class TQMap; template class TQMapConstIterator; #endif class Q_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( const TQMap& ); #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 toList() const; const TQMap toMap() const; #endif TQSizePolicy toSizePolicy() const; #ifndef TQT_NO_TEMPLATE_VARIANT TQValueListConstIterator stringListBegin() const; TQValueListConstIterator stringListEnd() const; TQValueListConstIterator listBegin() const; TQValueListConstIterator listEnd() const; TQMapConstIterator mapBegin() const; TQMapConstIterator mapEnd() const; TQMapConstIterator 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& asList(); TQMap& 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 QT_H #include "ntqvaluelist.h" #include "ntqstringlist.h" #include "ntqmap.h" #endif // QT_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 TQVariant::stringListBegin() const { if ( d->typ != StringList ) return TQValueListConstIterator(); return ((const TQStringList*)d->value.ptr)->begin(); } inline TQValueListConstIterator TQVariant::stringListEnd() const { if ( d->typ != StringList ) return TQValueListConstIterator(); return ((const TQStringList*)d->value.ptr)->end(); } inline TQValueListConstIterator TQVariant::listBegin() const { if ( d->typ != List ) return TQValueListConstIterator(); return ((const TQValueList*)d->value.ptr)->begin(); } inline TQValueListConstIterator TQVariant::listEnd() const { if ( d->typ != List ) return TQValueListConstIterator(); return ((const TQValueList*)d->value.ptr)->end(); } inline TQMapConstIterator TQVariant::mapBegin() const { if ( d->typ != Map ) return TQMapConstIterator(); return ((const TQMap*)d->value.ptr)->begin(); } inline TQMapConstIterator TQVariant::mapEnd() const { if ( d->typ != Map ) return TQMapConstIterator(); return ((const TQMap*)d->value.ptr)->end(); } inline TQMapConstIterator TQVariant::mapFind( const TQString& key ) const { if ( d->typ != Map ) return TQMapConstIterator(); return ((const TQMap*)d->value.ptr)->find( key ); } #endif #ifndef TQT_NO_DATASTREAM Q_EXPORT TQDataStream& operator>> ( TQDataStream& s, TQVariant& p ); Q_EXPORT TQDataStream& operator<< ( TQDataStream& s, const TQVariant& p ); Q_EXPORT TQDataStream& operator>> ( TQDataStream& s, TQVariant::Type& p ); Q_EXPORT TQDataStream& operator<< ( TQDataStream& s, const TQVariant::Type p ); #endif #endif //TQT_NO_VARIANT #endif // TQVARIANT_H