// This is the SIP interface definition for TQVariant.
//
// Copyright (c) 2007
// 	Riverbank Computing Limited <info@riverbankcomputing.co.uk>
// 
// This file is part of PyTQt.
// 
// This copy of PyTQt 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.
// 
// PyTQt 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
// PyTQt; 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>TQVariant (TQt v2.1+)</Title>
<FuncSynopsis>
        <FuncDef><Function>TQVariant</Function></FuncDef>
        <ParamDef>const char *<Parameter>val</Parameter></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef><Function>TQVariant</Function></FuncDef>
        <ParamDef>const TQBitArray &amp;<Parameter>val</Parameter></ParamDef>
</FuncSynopsis>
<Para>
Not yet implemented.  (TQt v3+)
</Para>

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

<FuncSynopsis>
        <FuncDef><Function>TQVariant</Function></FuncDef>
        <ParamDef>const TQMap&lt;TQString,TQVariant&gt; &amp;<Parameter>val</Parameter></ParamDef>
</FuncSynopsis>
<Para>
Not yet implemented.
</Para>

<FuncSynopsis>
        <FuncDef>TQBitArray &amp;<Function>asBitArray</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not yet implemented.  (TQt 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>TQValueList&lt;TQVariant&gt; &amp;<Function>asList</Function></FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>TQMap&lt;TQString,TQVariant&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>TQValueListConstIterator&lt;TQVariant&gt;<Function>listBegin</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

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

<FuncSynopsis>
        <FuncDef>TQMapConstIterator&lt;TQString,TQVariant&gt;<Function>mapBegin</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>TQMapConstIterator&lt;TQString,TQVariant&gt;<Function>mapEnd</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
        <FuncDef>TQMapConstIterator&lt;TQString,TQVariant&gt;<Function>mapFind</Function> const</FuncDef>
        <ParamDef>const TQString &<Parameter>key</Parameter></ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

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

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

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

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

<FuncSynopsis>
        <FuncDef>const TQMap&lt;TQString,TQVariant&gt;<Function>toMap</Function> const</FuncDef>
        <ParamDef></ParamDef>
</FuncSynopsis>
<Para>
Not yet implemented.
</Para>
</Sect2>
%End


class TQVariant
{
%TypeHeaderCode
#include <tqvariant.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,
		SizePolicy,
		Date,
		Time,
		DateTime,
		ByteArray,
		BitArray,
		KeySequence,
		Pen,
		LongLong,
		ULongLong,
	};

	TQVariant();
	TQVariant(const TQVariant &);
	TQVariant(TQDataStream &);

	TQVariant(const TQString &);
	TQVariant(const TQCString &);
//	TQVariant(const char *);
	TQVariant(const TQStringList &);
	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 &);
//	TQVariant(const TQValueList<TQVariant> &);
//	TQVariant(const TQMap<TQString,TQVariant> &);
	TQVariant(int /Constrained/);
//	TQVariant(uint);
//	TQVariant(TQ_LLONG);
//	TQVariant(TQ_ULLONG);
	TQVariant(bool /Constrained/);
	TQVariant(double);
	TQVariant(TQSizePolicy);
	// This must appear after the TQString, int and double ctors because
	// each of those can be converted automatically to a TQKeySequence and
	// we want those to take precedence.
	TQVariant(const TQKeySequence &);
	TQVariant(const TQPen &);

	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;
	const TQStringList toStringList() const;
	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;
	const TQKeySequence toKeySequence() const;
	const TQPen toPen() const;
	int toInt() const;
	uint toUInt() const;
//	TQ_LLONG toLongLong(bool * = 0) const;
//	TQ_ULLONG toULongLong( bool * = 0) const;
	bool toBool() const;
	double toDouble() const;
//	const TQValueList<TQVariant> toList() const;
//	const TQMap<TQString,TQVariant> toMap() const;
	TQSizePolicy toSizePolicy() const;

//	TQValueListConstIterator<TQVariant> listBegin() const;
//	TQValueListConstIterator<TQVariant> listEnd() const;
//	TQValueListConstIterator<TQString> stringListBegin() const;
//	TQValueListConstIterator<TQString> stringListEnd() const;
//	TQMapConstIterator<TQString,TQVariant> mapBegin() const;
//	TQMapConstIterator<TQString,TQVariant> mapEnd() const;
//	TQMapConstIterator<TQString,TQVariant> mapFind(const TQString &) const;

	TQString & asString();
	TQCString & asCString();
	TQStringList & asStringList();
	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();
	TQKeySequence & asKeySequence();
	TQPen & asPen();
//	int & asInt();
//	uint & asUInt();
//	TQ_LLONG & asLongLong();
//	TQ_ULLONG & asULongLong();
//	bool & asBool();
//	double & asDouble();
//	TQValueList<TQVariant> & asList();
//	TQMap<TQString,TQVariant> & asMap();
	TQSizePolicy & asSizePolicy();

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

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