// This is the SIP interface definition for QVariant.
//
// Copyright (c) 2007
// 	Riverbank Computing Limited <info@riverbankcomputing.co.uk>
// 
// This file is part of PyQt.
// 
// This copy of PyQt is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2, or (at your option) any later
// version.
// 
// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
// details.
// 
// You should have received a copy of the GNU General Public License along with
// PyQt; see the file LICENSE.  If not, write to the Free Software Foundation,
// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


%ExportedDoc
<Sect2><Title>QVariant (Qt v2.1+)</Title>
<FuncSynopsis>
        <FuncDef><Function>QVariant</Function></FuncDef>
        <ParamDef>const char *<Parameter>val</Parameter></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef><Function>QVariant</Function></FuncDef>
        <ParamDef>const QBitArray &amp;<Parameter>val</Parameter></ParamDef>
</FuncSynopsis>
<Para>
Not yet implemented.  (Qt v3+)
</Para>

<FuncSynopsis>
        <FuncDef><Function>QVariant</Function></FuncDef>
        <ParamDef>const QValueList&lt;QVariant&gt; &amp;<Parameter>val</Parameter></ParamDef>
</FuncSynopsis>
<Para>
Not yet implemented.
</Para>

<FuncSynopsis>
        <FuncDef><Function>QVariant</Function></FuncDef>
        <ParamDef>const QMap&lt;QString,QVariant&gt; &amp;<Parameter>val</Parameter></ParamDef>
</FuncSynopsis>
<Para>
Not yet implemented.
</Para>

<FuncSynopsis>
        <FuncDef>QBitArray &amp;<Function>asBitArray</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not yet implemented.  (Qt v3+)
</Para>

<FuncSynopsis>
        <FuncDef>bool &amp;<Function>asBool</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>double &amp;<Function>asDouble</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>int &amp;<Function>asInt</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>QValueList&lt;QVariant&gt; &amp;<Function>asList</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>QMap&lt;QString,QVariant&gt; &amp;<Function>asMap</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>uint &amp;<Function>asUInt</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>QValueListConstIterator&lt;QVariant&gt;<Function>listBegin</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>QValueListConstIterator&lt;QVariant&gt;<Function>listEnd</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>QMapConstIterator&lt;QString,QVariant&gt;<Function>mapBegin</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>QMapConstIterator&lt;QString,QVariant&gt;<Function>mapEnd</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>QMapConstIterator&lt;QString,QVariant&gt;<Function>mapFind</Function> const</FuncDef>
        <ParamDef>const QString &<Parameter>key</Parameter></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>QValueListConstIterator&lt;QString&gt;<Function>stringListBegin</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>QValueListConstIterator&lt;QString&gt;<Function>stringListEnd</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>const QBitArray <Function>toBitArray</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not yet implemented.  (Qt v3+)
</Para>

<FuncSynopsis>
        <FuncDef>const QValueList&lt;QVariant&gt;<Function>toList</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not yet implemented.
</Para>

<FuncSynopsis>
        <FuncDef>const QMap&lt;QString,QVariant&gt;<Function>toMap</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not yet implemented.
</Para>
</Sect2>
%End


%If (Qt_2_1_0 -)

class QVariant
{
%TypeHeaderCode
#include <qvariant.h>
%End

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,
%If (Qt_2_2_0 -)
		SizePolicy,
%End
%If (Qt_3_0_0 -)
		Date,
		Time,
		DateTime,
		ByteArray,
		BitArray,
		KeySequence,
%End
%If (Qt_3_1_0 -)
		Pen,
%End
%If (Qt_3_2_0 -)
		LongLong,
		ULongLong,
%End
	};

	QVariant();
	QVariant(const QVariant &);
	QVariant(QDataStream &);

	QVariant(const QString &);
	QVariant(const QCString &);
//	QVariant(const char *);
	QVariant(const QStringList &);
	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 &);
%If (Qt_3_0_0 -)
	QVariant(const QDate &);
	QVariant(const QTime &);
	QVariant(const QDateTime &);
	QVariant(const QByteArray &);
//	QVariant(const QBitArray &);
%End
//	QVariant(const QValueList<QVariant> &);
//	QVariant(const QMap<QString,QVariant> &);
	QVariant(int /Constrained/);
//	QVariant(uint);
%If (Qt_3_2_0 -)
//	QVariant(Q_LLONG);
//	QVariant(Q_ULLONG);
%End
	QVariant(bool,int);
	QVariant(double);
%If (Qt_2_2_0 -)
	QVariant(QSizePolicy);
%End
%If (Qt_3_0_0 -)
	// This must appear after the QString, int and double ctors because
	// each of those can be converted automatically to a QKeySequence and
	// we want those to take precedence.
	QVariant(const QKeySequence &);
%End
%If (Qt_3_1_0 -)
	QVariant(const QPen &);
%End

	Type type() const;
	const char* typeName() const;

	bool canCast(Type) const;
%If (Qt_3_0_0 -)
	bool cast(Type);
%End

	bool isValid() const;
%If (Qt_3_1_0 -)
	bool isNull() const;
%End

	void clear();

	const QString toString() const;
	const QCString toCString() const;
	const QStringList toStringList() const;
	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;
%If (Qt_3_0_0 -)
	const QDate toDate() const;
	const QTime toTime() const;
	const QDateTime toDateTime() const;
	const QByteArray toByteArray() const;
//	const QBitArray toBitArray() const;
	const QKeySequence toKeySequence() const;
%End
%If (Qt_3_1_0 -)
	const QPen toPen() const;
%End
	int toInt() const;
	uint toUInt() const;
%If (Qt_3_2_0 -)
//	Q_LLONG toLongLong(bool * = 0) const;
//	Q_ULLONG toULongLong( bool * = 0) const;
%End
	bool toBool() const;
	double toDouble() const;
//	const QValueList<QVariant> toList() const;
//	const QMap<QString,QVariant> toMap() const;
%If (Qt_2_2_0 -)
	QSizePolicy toSizePolicy() const;
%End

//	QValueListConstIterator<QVariant> listBegin() const;
//	QValueListConstIterator<QVariant> listEnd() const;
//	QValueListConstIterator<QString> stringListBegin() const;
//	QValueListConstIterator<QString> stringListEnd() const;
//	QMapConstIterator<QString,QVariant> mapBegin() const;
//	QMapConstIterator<QString,QVariant> mapEnd() const;
//	QMapConstIterator<QString,QVariant> mapFind(const QString &) const;

	QString & asString();
	QCString & asCString();
	QStringList & asStringList();
	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();
%If (Qt_3_0_0 -)
	QDate & asDate();
	QTime & asTime();
	QDateTime & asDateTime();
	QByteArray & asByteArray();
//	QBitArray & asBitArray();
	QKeySequence & asKeySequence();
%End
%If (Qt_3_1_0 -)
	QPen & asPen();
%End
//	int & asInt();
//	uint & asUInt();
%If (Qt_3_2_0 -)
//	Q_LLONG & asLongLong();
//	Q_ULLONG & asULongLong();
%End
//	bool & asBool();
//	double & asDouble();
//	QValueList<QVariant> & asList();
//	QMap<QString,QVariant> & asMap();
%If (Qt_2_2_0 -)
	QSizePolicy & asSizePolicy();
%End

	void load(QDataStream &);
	void save(QDataStream &) const;

	static const char *typeToName(Type);
	static Type nameToType(const char *);
};

%End
