// This is the SIP interface definition for QMetaObject and QMetaProperty.
//
// 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>QMetaObject</Title>
<FuncSynopsis>
	<FuncDef>int <Function>numClassInfo</Function> const</FuncDef>
	<ParamDef>bool <Parameter>super</Parameter> = FALSE</ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>

<FuncSynopsis>
	<FuncDef>const QClassInfo *<Function>classInfo</Function> const</FuncDef>
	<ParamDef>bool <Parameter>super</Parameter> = FALSE</ParamDef>
</FuncSynopsis>
<Para>
Not implemented.
</Para>
</Sect2>

<Sect2><Title>QMetaProperty</Title>
<Para>
<Literal>QMetaProperty</Literal> is fully implemented.
</Para>
</Sect2>
%End


class QMetaObject
{
%TypeHeaderCode
#include <qmetaobject.h>
%End

public:
	const char *className() const;
	const char *superClassName() const;
	QMetaObject *superClass() const;

%If (Qt_2_1_0 -)
	bool inherits(const char *) const;

	int numSlots(bool = 0) const;
	int numSignals(bool = 0) const;

	QStrList slotNames(bool = 0) const;
	QStrList signalNames(bool = 0) const;

	//int numClassInfo(bool = 0) const;
	//QClassInfo *classInfo(int,bool = 0) const;
	const char *classInfo(const char *,bool = 0) const;

%If (Qt_PROPERTIES)
%If (Qt_3_0_0 -)
	const QMetaProperty *property(int,bool = 0) const;
	int findProperty(const char *,bool = 0) const;
	int numProperties(bool = 0) const;
%End
%If (- Qt_3_0_0)
	const QMetaProperty *property(const char *,bool = 0) const;
%End

	QStrList propertyNames(bool = 0) const;
%End
%End

private:
	QMetaObject(const QMetaObject &);
};


%If (Qt_PROPERTIES)
%If (Qt_2_1_0 -)

class QMetaProperty
{
%TypeHeaderCode
#include <qmetaobject.h>
%End

public:
	const char *type() const;
	const char *name() const;

%If (Qt_2_2_0 -)
	bool writable() const;
%End
%If (- Qt_3_0_0)
	bool writeable() const;
%End
	bool isValid() const;

	bool isSetType() const;
	bool isEnumType() const;
	QStrList enumKeys() const;

	int keyToValue(const char *) const;
	const char *valueToKey(int) const;
	int keysToValue(const QStrList &) const;
	QStrList valueToKeys(int) const;

%If (Qt_3_1_0 -)
	bool designable(QObject * = 0) const;
	bool scriptable(QObject * = 0) const;
	bool stored(QObject * = 0) const;
%End
%If (Qt_3_0_0 - Qt_3_1_0)
	bool designable(QObject *) const;
	bool scriptable(QObject *) const;
	bool stored(QObject *) const;
%End

%If (Qt_3_0_0 -)
	bool reset(QObject *) const;
%End

%If (- Qt_3_0_0)
	bool stored(QObject *) const;
	bool designable() const;

	enum Specification {
		Unspecified,
		Class,
		Reference,
		Pointer,
		ConstCharStar
	};

	enum Flags {
		UnresolvedEnum,
		UnresolvedSet,
		UnresolvedEnumOrSet,
		UnresolvedStored,
		UnresolvedDesignable,
		NotDesignable,
		NotStored,
%If (Qt_2_2_0 -)
		StdSet,
%End
	};

	bool testFlags(uint) const;
	void setFlags(uint);
	void clearFlags(uint);
%End
};

%End
%End
