summaryrefslogtreecommitdiffstats
path: root/src/kernel/qmetaobject.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2024-09-04 11:53:23 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2024-09-04 13:56:43 +0900
commit0582c90a9ed4b965629267713f51c0da7c38b39d (patch)
treecae95e850081d0a7f2be6cef5837f43a28d53d2c /src/kernel/qmetaobject.cpp
parent39f8a475b4ec5c87a11a7e9300a30ef1c5b4a7e1 (diff)
downloadtqt-0582c90a9ed4b965629267713f51c0da7c38b39d.tar.gz
tqt-0582c90a9ed4b965629267713f51c0da7c38b39d.zip
Rename remaining ntq[m-r]* related files to equivalent tq* (except ntqmodules.h)
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'src/kernel/qmetaobject.cpp')
-rw-r--r--src/kernel/qmetaobject.cpp1251
1 files changed, 0 insertions, 1251 deletions
diff --git a/src/kernel/qmetaobject.cpp b/src/kernel/qmetaobject.cpp
deleted file mode 100644
index ae74503c3..000000000
--- a/src/kernel/qmetaobject.cpp
+++ /dev/null
@@ -1,1251 +0,0 @@
-/****************************************************************************
-**
-** Implementation of TQMetaObject class
-**
-** Created : 930419
-**
-** 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.
-**
-**********************************************************************/
-
-#include "ntqmetaobject.h"
-#include "tqasciidict.h"
-
-#ifdef TQT_THREAD_SUPPORT
-#include <private/tqmutexpool_p.h>
-#endif // TQT_THREAD_SUPPORT
-
-/*!
- \class TQMetaData ntqmetaobject.h
- \reentrant
-
- \brief The TQMetaData class provides information about a member function that is known to the meta object system.
-
- \internal
-
- The struct consists of three members, \e name, \e method and \e access:
-
- \code
- const char *name; // - member name
- const TQUMethod* method; // - detailed method description
- enum Access { Private, Protected, Public };
- Access access; // - access permission
- \endcode
- */
-
-/*!
- \class TQClassInfo ntqmetaobject.h
-
- \brief The TQClassInfo class provides a struct that stores some basic information about a single class.
-
- \internal
-
- The class information is a simple \e name - \e value pair:
-
- \code
- const char* name;
- const char* value;
- \endcode
-
- */
-
-
-/*!
- \class TQMetaObject ntqmetaobject.h
- \brief The TQMetaObject class contains meta information about TQt objects.
-
- \ingroup objectmodel
-
- The Meta Object System in TQt is responsible for the signals and
- slots inter-object communication mechanism, runtime type
- information and the property system. All meta information in TQt is
- kept in a single instance of TQMetaObject per class.
-
- This class is not normally required for application programming.
- But if you write meta applications, such as scripting engines or
- GUI builders, you might find these functions useful:
- \list
- \i className() to get the name of a class.
- \i superClassName() to get the name of the superclass.
- \i inherits(), the function called by TQObject::inherits().
- \i superClass() to access the superclass's meta object.
- \i numSlots(), numSignals(), slotNames(), and signalNames() to get
- information about a class's signals and slots.
- \i property() and propertyNames() to obtain information about a
- class's properties.
- \endlist
-
- Classes may have a list of name-value pairs of class information.
- The number of pairs is returned by numClassInfo(), and values are
- returned by classInfo().
-
- \sa \link moc.html moc (Meta Object Compiler)\endlink
-
-*/
-
-
-/*****************************************************************************
- The private object.
- *****************************************************************************/
-
-// extra flags from moc.y
-enum Flags {
- Invalid = 0x00000000,
- Readable = 0x00000001,
- Writable = 0x00000002,
- EnumOrSet = 0x00000004,
- UnresolvedEnum = 0x00000008,
- StdSet = 0x00000100,
- Override = 0x00000200,
- NotDesignable = 0x00001000,
- DesignableOverride = 0x00002000,
- NotScriptable = 0x00004000,
- ScriptableOverride = 0x00008000,
- NotStored = 0x00010000,
- StoredOverride = 0x00020000
-};
-
-static TQAsciiDict<void> *qt_metaobjects = 0;
-static int qt_metaobjects_count = 0;
-
-class TQMetaObjectPrivate
-{
-public:
- TQMetaObjectPrivate() :
-#ifndef TQT_NO_PROPERTIES
- enumData(0), numEnumData(0),
- propData(0),numPropData(0),
- tqt_static_property(0),
-#endif
- classInfo(0), numClassInfo(0) {}
-#ifndef TQT_NO_PROPERTIES
- const TQMetaEnum *enumData;
- int numEnumData;
- const TQMetaProperty *propData;
- int numPropData;
- bool (*tqt_static_property)(TQObject*, int, int, TQVariant*);
-#endif
- const TQClassInfo *classInfo;
- int numClassInfo;
-};
-
-
-/*****************************************************************************
- Internal dictionary for fast access to class members
- *****************************************************************************/
-
-#if defined(Q_CANNOT_DELETE_CONSTANT)
-typedef TQMetaData TQConstMetaData;
-#else
-typedef const TQMetaData TQConstMetaData;
-#endif
-
-class TQ_EXPORT TQMemberDict : public TQAsciiDict<TQConstMetaData>
-{
-public:
- TQMemberDict( int size = 17, bool cs = TRUE, bool ck = TRUE ) :
- TQAsciiDict<TQConstMetaData>(size,cs,ck) {}
- TQMemberDict( const TQMemberDict &dict ) : TQAsciiDict<TQConstMetaData>(dict) {}
- ~TQMemberDict() { clear(); }
- TQMemberDict &operator=(const TQMemberDict &dict)
- { return (TQMemberDict&)TQAsciiDict<TQConstMetaData>::operator=(dict); }
-};
-
-
-/*
- Calculate optimal dictionary size for n entries using prime numbers,
- and assuming there are no more than 40 entries.
-*/
-
-static int optDictSize( int n )
-{
- if ( n < 6 )
- n = 5;
- else if ( n < 10 )
- n = 11;
- else if ( n < 14 )
- n = 17;
- else
- n = 23;
- return n;
-}
-
-
-/*****************************************************************************
- TQMetaObject member functions
- *****************************************************************************/
-
-/*!\internal
- */
-TQMetaObject::TQMetaObject( const char *const class_name, TQMetaObject *super_class,
- const TQMetaData *const slot_data, int n_slots,
- const TQMetaData *const signal_data, int n_signals,
-#ifndef TQT_NO_PROPERTIES
- const TQMetaProperty *const prop_data, int n_props,
- const TQMetaEnum *const enum_data, int n_enums,
-#endif
- const TQClassInfo *const class_info, int n_info )
-{
- classname = class_name; // set meta data
- superclass = super_class;
- superclassname = superclass ? superclass->className() : 0;
- slotDict = init( slotData = slot_data, n_slots );
- signalDict = init( signalData = signal_data, n_signals );
-
- d = new TQMetaObjectPrivate;
- reserved = 0;
-
-#ifndef TQT_NO_PROPERTIES
- d->propData = prop_data;
- d->numPropData = n_props;
- d->enumData = enum_data;
- d->numEnumData = n_enums;
-#endif
- d->classInfo = class_info;
- d->numClassInfo = n_info;
-
- signaloffset = superclass ? ( superclass->signalOffset() + superclass->numSignals() ) : 0;
- slotoffset = superclass ? ( superclass->slotOffset() + superclass->numSlots() ) : 0;
-#ifndef TQT_NO_PROPERTIES
- propertyoffset = superclass ? ( superclass->propertyOffset() + superclass->numProperties() ) : 0;
-#endif
-}
-
-#ifndef TQT_NO_PROPERTIES
-/*!\internal
- */
-TQMetaObject::TQMetaObject( const char *const class_name, TQMetaObject *super_class,
- const TQMetaData *const slot_data, int n_slots,
- const TQMetaData *const signal_data, int n_signals,
- const TQMetaProperty *const prop_data, int n_props,
- const TQMetaEnum *const enum_data, int n_enums,
- bool (*tqt_static_property)(TQObject*, int, int, TQVariant*),
- const TQClassInfo *const class_info, int n_info )
-{
- classname = class_name; // set meta data
- superclass = super_class;
- superclassname = superclass ? superclass->className() : 0;
- slotDict = init( slotData = slot_data, n_slots );
- signalDict = init( signalData = signal_data, n_signals );
-
- d = new TQMetaObjectPrivate;
- reserved = 0;
-
- d->propData = prop_data;
- d->numPropData = n_props;
- d->enumData = enum_data;
- d->numEnumData = n_enums;
- d->tqt_static_property = tqt_static_property;
- d->classInfo = class_info;
- d->numClassInfo = n_info;
-
- signaloffset = superclass ? ( superclass->signalOffset() + superclass->numSignals() ) : 0;
- slotoffset = superclass ? ( superclass->slotOffset() + superclass->numSlots() ) : 0;
- propertyoffset = superclass ? ( superclass->propertyOffset() + superclass->numProperties() ) : 0;
-}
-#endif
-
-/*!\internal
- */
-TQMetaObject::~TQMetaObject()
-{
- delete slotDict; // delete dicts
- delete signalDict;
- delete d;
-#ifdef TQT_THREAD_SUPPORT
- TQMutexLocker( tqt_global_mutexpool ?
- tqt_global_mutexpool->get( &qt_metaobjects ) : 0 );
-#endif // TQT_THREAD_SUPPORT
- if ( qt_metaobjects ) {
- qt_metaobjects->remove( classname );
- if ( qt_metaobjects->isEmpty() ) {
- delete qt_metaobjects;
- qt_metaobjects = 0;
- }
- }
-
- // delete reserved; // Unused void*
-}
-
-
-/*!
- \fn const char *TQMetaObject::className() const
-
- Returns the class name.
-
- \sa TQObject::className(), superClassName()
-*/
-
-/*!
- \fn const char *TQMetaObject::superClassName() const
-
- Returns the class name of the superclass or 0 if there is no
- superclass in the TQObject hierachy.
-
- \sa className()
-*/
-
-/*!
- \fn TQMetaObject *TQMetaObject::superClass() const
-
- Returns the meta object of the super class or 0 if there is no
- such object.
-*/
-
-/*!
- Returns the number of slots for this class.
-
- If \a super is TRUE, inherited slots are included.
-
- \sa slotNames()
-*/
-int TQMetaObject::numSlots( bool super ) const // number of slots
-{
- int n = slotDict ? slotDict->count() : 0;
- if ( !super || !superclass )
- return n;
- return n + superclass->numSlots( super );
-}
-
-/*!
- Returns the number of signals for this class.
-
- If \a super is TRUE, inherited signals are included.
-
- \sa signalNames()
-*/
-int TQMetaObject::numSignals( bool super ) const // number of signals
-{
- int n = signalDict ? signalDict->count() : 0;
- if ( !super || !superclass )
- return n;
- return n + superclass->numSignals( super );
-}
-
-
-/*! \internal
-
- Returns the meta data of the slot with the name \a n or 0 if no
- such slot exists.
-
- If \a super is TRUE, inherited slots are included.
- */
-const TQMetaData* TQMetaObject::slot( int index, bool super ) const
-{
- int idx = index - ( super ? slotOffset() : 0 );
- if ( slotDict && idx >= 0 && idx < (int) slotDict->count() ) {
- return slotData + idx;
- }
- if ( !super || !superclass )
- return 0;
- return superclass->slot( index, super );
-}
-
-/*! \internal
-
- Returns the meta data of the signal with the name \a n or 0 if no
- such signal exists.
-
- If \a super is TRUE, inherited signals are included.
- */
-const TQMetaData* TQMetaObject::signal( int index, bool super ) const
-{
- int idx = index - ( super ? signalOffset() : 0 );
- if ( signalDict && idx >= 0 && idx < (int) signalDict->count() ) {
- return signalData + idx;
- }
- if ( !super || !superclass )
- return 0;
- return superclass->signal( index, super );
-}
-
-
-/*!
- \fn int TQMetaObject::signalOffset() const
-
- \internal
-
- Returns the signal offset for this metaobject.
-
-*/
-
-/*!
- \fn int TQMetaObject::propertyOffset() const
-
- \internal
-
- Returns the property offset for this metaobject.
-
-*/
-
-/*! \internal
- Returns the index of the signal with name \n or -1 if no such signal exists.
-
- If \a super is TRUE, inherited signals are included.
-*/
-int TQMetaObject::findSignal( const char* n, bool super ) const
-{
- const TQMetaObject *mo = this;
- int offset = -1;
-
- do {
- const TQMetaData *md = mo->signalDict ? mo->signalDict->find( n ) : 0;
- if ( md ) {
-#if defined(QT_CHECK_RANGE)
- if ( offset != -1 ) {
- tqWarning( "TQMetaObject::findSignal:%s: Conflict with %s::%s",
- className(), mo->className(), n );
- return offset;
- }
-#endif
- offset = mo->signalOffset() + ( md - mo->signalData );
-#if !defined(QT_CHECK_RANGE)
- return offset;
-#endif
- }
- } while ( super && (mo = mo->superclass) );
-
- return offset;
-}
-
-/*!
- \fn int TQMetaObject::slotOffset() const
-
- \internal
-
- Returns the slot offset for this metaobject.
-
-*/
-
-/*! \internal
- Returns the index of the slot with name \n or -1 if no such slot exists.
-
- If \a super is TRUE, inherited slots are included.
- */
-int TQMetaObject::findSlot( const char* n, bool super ) const
-{
- const TQMetaData *md = slotDict ? slotDict->find( n ) : 0;
- if ( md )
- return slotOffset() + ( md - slotData );
- if ( !super || !superclass)
- return -1;
- return superclass->findSlot( n, super );
-}
-
-/*!\internal
- */
-TQMetaObject *TQMetaObject::new_metaobject( const char *classname,
- TQMetaObject *superclassobject,
- const TQMetaData * const slot_data, int n_slots,
- const TQMetaData * const signal_data, int n_signals,
-#ifndef TQT_NO_PROPERTIES
- const TQMetaProperty * const prop_data, int n_props,
- const TQMetaEnum * const enum_data, int n_enums,
-#endif
- const TQClassInfo * const class_info, int n_info )
-{
- return new TQMetaObject( classname, superclassobject, slot_data, n_slots,
- signal_data, n_signals,
-#ifndef TQT_NO_PROPERTIES
- prop_data, n_props,
- enum_data, n_enums,
-#endif
- class_info, n_info );
-}
-
-#ifndef TQT_NO_PROPERTIES
-/*!\internal
- */
-TQMetaObject *TQMetaObject::new_metaobject( const char *classname,
- TQMetaObject *superclassobject,
- const TQMetaData * const slot_data, int n_slots,
- const TQMetaData * const signal_data, int n_signals,
- const TQMetaProperty * const prop_data, int n_props,
- const TQMetaEnum * const enum_data, int n_enums,
- bool (*tqt_static_property)(TQObject*, int, int, TQVariant*),
- const TQClassInfo * const class_info, int n_info )
-{
- return new TQMetaObject( classname, superclassobject, slot_data, n_slots,
- signal_data, n_signals,
- prop_data, n_props,
- enum_data, n_enums,
- tqt_static_property,
- class_info, n_info );
-}
-#endif
-
-/*!\internal
- */
-TQMemberDict *TQMetaObject::init( const TQMetaData * data, int n )
-{
- if ( n == 0 ) // nothing, then make no dict
- return 0;
- TQMemberDict *dict = new TQMemberDict( optDictSize(n), TRUE, FALSE );
- TQ_CHECK_PTR( dict );
- while ( n-- ) { // put all members into dict
- dict->insert( data->name, data );
- data++;
- }
- return dict;
-}
-
-/*!
- Returns the number of items of class information available for
- this class.
-
- If \a super is TRUE, inherited class information is included.
-*/
-int TQMetaObject::numClassInfo( bool super ) const
-{
- return d->numClassInfo + ((super && superclass)?superclass->numClassInfo(super):0);
-}
-
-/*!
- Returns the class information with index \a index or 0 if no such
- information exists.
-
- If \a super is TRUE, inherited class information is included.
-*/
-const TQClassInfo* TQMetaObject::classInfo( int index, bool super ) const
-{
- if ( index < 0 )
- return 0;
- if ( index < d->numClassInfo )
- return &(d->classInfo[ index ]);
- if ( !super || !superclass )
- return 0;
- return superclass->classInfo( index - d->numClassInfo, super );
-}
-
-/*!
- \overload
- Returns the class information with name \a name or 0 if no such
- information exists.
-
- If \a super is TRUE, inherited class information is included.
-*/
-const char* TQMetaObject::classInfo( const char* name, bool super ) const
-{
- for( int i = 0; i < d->numClassInfo; ++i ) {
- if ( qstrcmp( d->classInfo[i].name, name ) == 0 )
- return d->classInfo[i].value;
- }
- if ( !super || !superclass )
- return 0;
- return superclass->classInfo( name, super );
-}
-
-#ifndef TQT_NO_PROPERTIES
-
-/*!
- Returns the number of properties for this class.
-
- If \a super is TRUE, inherited properties are included.
-
- \sa propertyNames()
- */
-int TQMetaObject::numProperties( bool super ) const // number of signals
-{
- int n = d->numPropData;
- if ( !super || !superclass )
- return n;
- return n + superclass->numProperties( super );
-}
-
-/*!
- Returns the property meta data for the property at index \a index
- or 0 if no such property exists.
-
- If \a super is TRUE, inherited properties are included.
-
- \sa propertyNames()
- */
-const TQMetaProperty* TQMetaObject::property( int index, bool super ) const
-{
- int idx = index - ( super ? propertyOffset() : 0 );
- if ( d->propData && idx >= 0 && idx < (int)d->numPropData )
- return d->propData + idx;
- if ( !super || !superclass )
- return 0;
- return superclass->property( index, super );
-}
-
-
-/*!
- Returns the index for the property with name \a name or -1 if no
- such property exists.
-
- If \a super is TRUE, inherited properties are included.
-
- \sa property(), propertyNames()
-*/
-
-int TQMetaObject::findProperty( const char *name, bool super ) const
-{
- for( int i = 0; i < d->numPropData; ++i ) {
- if ( d->propData[i].isValid() && qstrcmp( d->propData[i].name(), name ) == 0 ) {
- return ( super ? propertyOffset() : 0 ) + i;
- }
- }
- if ( !super || !superclass )
- return -1;
- return superclass->findProperty( name, super );
-}
-
-/*! \internal
-
- Returns the index for the property \a prop
- or -1 if the property can not be found.
-
- If \a super is TRUE, inherited properties are included.
-
- \sa property(), propertyNames()
-*/
-
-int TQMetaObject::indexOfProperty( const TQMetaProperty* prop, bool super ) const
-{
- if ( *prop->meta == this )
- return ( super ? propertyOffset() : 0 ) + ( prop - d->propData);
- if ( !super || !superclass )
- return -1;
- return superclass->indexOfProperty( prop, super );
-}
-
-/*!\internal
-
- Returns the parent property of property \a p or 0, if the property
- cannot be resolved.
-
- \a p has to be contained in this meta object
-*/
-
-const TQMetaProperty* TQMetaObject::resolveProperty( const TQMetaProperty* p ) const
-{
- if ( !superclass )
- return 0;
- return superclass->property( superclass->findProperty( p->n, TRUE ), TRUE );
-}
-
-/*!\internal
-
- \overload
-
- The version of resolveProperty that is used by moc generated code
-*/
-
-int TQMetaObject::resolveProperty( int index ) const
-{
- if ( !superclass )
- return -1;
- const TQMetaProperty* p = d->propData + ( index - propertyOffset() );
- return superclass->findProperty( p->n, TRUE );
-}
-
-
-/*!
- Returns a list with the names of all this class's properties.
-
- If \a super is TRUE, inherited properties are included.
-
- \sa property()
-*/
-TQStrList TQMetaObject::propertyNames( bool super ) const
-{
- TQStrList l( FALSE );
-
- if ( superclass && super ) {
- TQStrList sl = superclass->propertyNames( super );
- for ( TQStrListIterator slit( sl ); slit.current(); ++slit )
- l.append( slit.current() );
- }
-
- for( int i = 0; i < d->numPropData; ++i ) {
- if ( d->propData[i].isValid() )
- l.append( d->propData[i].name() );
- }
-
- return l;
-}
-
-/*!
- Returns a list with the names of all this class's signals.
-
- If \a super is TRUE, inherited signals are included.
-*/
-TQStrList TQMetaObject::signalNames( bool super ) const
-{
- TQStrList l( FALSE );
- int n = numSignals( super );
- for( int i = 0; i < n; ++i ) {
- l.append( signal(i, super)->name );
- }
- return l;
-}
-
-/*!
- Returns a list with the names of all this class's slots.
-
- If \a super is TRUE, inherited slots are included.
-
- \sa numSlots()
-*/
-TQStrList TQMetaObject::slotNames( bool super ) const
-{
- TQStrList l( FALSE );
- int n = numSlots( super );
- for( int i = 0; i < n; ++i )
- l.append( slot( i, super)->name );
- return l;
-}
-
-/*!\internal
-
- */
-
-int TQMetaObject::numEnumerators( bool super ) const
-{
- int n = 0;
- if ( superclass && super )
- n += superclass->numEnumerators( super );
- return n + d->numEnumData;
-}
-
-/*!\internal
-
- */
-TQStrList TQMetaObject::enumeratorNames( bool super ) const
-{
- TQStrList l( FALSE );
-
- if ( superclass && super ) {
- TQStrList sl = superclass->enumeratorNames( super );
- for ( TQStrListIterator slit( sl ); slit.current(); ++slit )
- l.append( slit.current() );
- }
-
- for( int i = 0; i < d->numEnumData; ++i ) {
- if ( d->enumData[i].items )
- l.append( d->enumData[i].name );
- }
-
- return l;
-}
-
-/*!\internal
- */
-const TQMetaEnum* TQMetaObject::enumerator( const char* name, bool super ) const
-{
- for( int i = 0; i < d->numEnumData; ++i )
- if ( qstrcmp( d->enumData[i].name, name ) == 0 )
- return &(d->enumData[i]);
- if ( !super || !superclass )
- return 0;
- return superclass->enumerator( name, super );
-}
-
-#endif // TQT_NO_PROPERTIES
-
-
-/*!
- Returns TRUE if this class inherits \a clname within the meta
- object inheritance chain; otherwise returns FALSE.
-
- (A class is considered to inherit itself.)
-*/
-bool TQMetaObject::inherits( const char* clname ) const
-{
- const TQMetaObject *meta = this;
- while ( meta ) {
- if ( qstrcmp(clname, meta->className()) == 0 )
- return TRUE;
- meta = meta->superclass;
- }
- return FALSE;
-}
-
-/*! \internal */
-
-TQMetaObject *TQMetaObject::metaObject( const char *class_name )
-{
- if ( !qt_metaobjects )
- return 0;
-#ifdef TQT_THREAD_SUPPORT
- TQMutexLocker( tqt_global_mutexpool ?
- tqt_global_mutexpool->get( &qt_metaobjects ) : 0 );
-#endif // TQT_THREAD_SUPPORT
- TQtStaticMetaObjectFunction func = (TQtStaticMetaObjectFunction)qt_metaobjects->find( class_name );
- if ( func )
- return func();
- return 0;
-}
-
-/*! \internal */
-bool TQMetaObject::hasMetaObject( const char *class_name )
-{
- if ( !qt_metaobjects )
- return FALSE;
-#ifdef TQT_THREAD_SUPPORT
- TQMutexLocker( tqt_global_mutexpool ?
- tqt_global_mutexpool->get( &qt_metaobjects ) : 0 );
-#endif // TQT_THREAD_SUPPORT
- return !!qt_metaobjects->find( class_name );
-}
-
-#ifndef TQT_NO_PROPERTIES
-/*! \internal
-
-### this functions will go away. It exists purely for the sake of meta
-### object code generated with TQt 3.1.0
-*/
-bool TQMetaObject::tqt_static_property( TQObject* o, int id, int f, TQVariant* v)
-{
- if ( d->tqt_static_property )
- return d->tqt_static_property( o, id, f, v );
- else if ( o ) // compatibility
- return o->tqt_property( id, f, v );
- else if ( superclass )
- return superclass->tqt_static_property( o, id, f, v );
- switch ( f ) {
- case 3: case 4: case 5:
- return TRUE;
- default:
- return FALSE;
- }
-}
-
-
-/*!
- \class TQMetaProperty ntqmetaobject.h
-
- \brief The TQMetaProperty class stores meta data about a property.
-
- \ingroup objectmodel
-
- Property meta data includes type(), name(), and whether a property
- is writable(), designable() and stored().
-
- The functions isSetType(), isEnumType() and enumKeys() provide
- further information about a property's type. The conversion
- functions keyToValue(), valueToKey(), keysToValue() and
- valueToKeys() allow conversion between the integer representation
- of an enumeration or set value and its literal representation.
-
- Actual property values are set and received through TQObject's set
- and get functions. See TQObject::setProperty() and
- TQObject::property() for details.
-
- You receive meta property data through an object's meta object.
- See TQMetaObject::property() and TQMetaObject::propertyNames() for
- details.
-*/
-
-/*!
- Returns the possible enumeration keys if this property is an
- enumeration type (or a set type).
-
- \sa isEnumType()
-*/
-TQStrList TQMetaProperty::enumKeys() const
-{
- TQStrList l( FALSE );
- const TQMetaEnum* ed = enumData;
- if ( !enumData && meta )
- ed = (*meta)->enumerator( t, TRUE );
- if ( !ed )
- return l;
- if ( ed != 0 ) {
- for( uint i = 0; i < ed->count; ++i ) {
- uint j = 0;
- while ( j < i &&
- ed->items[j].value != ed->items[i].value )
- ++j;
- if ( i == j )
- l.append( ed->items[i].key );
- }
- }
- return l;
-}
-
-/*!
- Converts the enumeration key \a key to its integer value.
-
- For set types, use keysToValue().
-
- \sa valueToKey(), isSetType(), keysToValue()
-*/
-int TQMetaProperty::keyToValue( const char* key ) const
-{
- const TQMetaEnum* ed = enumData;
- if ( !enumData && meta )
- ed = (*meta)->enumerator( t, TRUE );
- if ( !ed )
- return -1;
- for ( uint i = 0; i < ed->count; ++i ) {
- if ( !qstrcmp( key, ed->items[i].key) )
- return ed->items[i].value;
- }
- return -1;
-}
-
-/*!
- Converts the enumeration value \a value to its literal key.
-
- For set types, use valueToKeys().
-
- \sa valueToKey(), isSetType(), valueToKeys()
-*/
-const char* TQMetaProperty::valueToKey( int value ) const
-{
- const TQMetaEnum* ed = enumData;
- if ( !enumData && meta )
- ed = (*meta)->enumerator( t, TRUE );
- if ( !ed )
- return 0;
- for ( uint i = 0; i < ed->count; ++i ) {
- if ( value == ed->items[i].value )
- return ed->items[i].key ;
- }
- return 0;
-}
-
-/*!
- Converts the list of keys \a keys to their combined (OR-ed)
- integer value.
-
- \sa isSetType(), valueToKey(), keysToValue()
-*/
-int TQMetaProperty::keysToValue( const TQStrList& keys ) const
-{
- const TQMetaEnum* ed = enumData;
- if ( !enumData && meta )
- ed = (*meta)->enumerator( t, TRUE );
- if ( !ed )
- return -1;
- int value = 0;
- for ( TQStrListIterator it( keys ); it.current(); ++it ) {
- uint i;
- for( i = ed->count; i > 0; --i ) {
- if ( !qstrcmp( it.current(), ed->items[i-1].key) ) {
- value |= ed->items[i-1].value;
- break;
- }
- }
- if ( i == 0 )
- value |= -1;
- }
- return value;
-}
-
-/*!
- Converts the set value \a value to a list of keys.
-
- \sa isSetType(), valueToKey(), valueToKeys()
-*/
-TQStrList TQMetaProperty::valueToKeys( int value ) const
-{
- TQStrList keys;
- const TQMetaEnum* ed = enumData;
- if ( !enumData && meta )
- ed = (*meta)->enumerator( t, TRUE );
- if ( !ed )
- return keys;
-
- int v = value;
- for( uint i = ed->count; i > 0; --i ) {
- int k = ed->items[i-1].value;
- if ( ( k != 0 && (v & k) == k ) || ( k == value) ) {
- v = v & ~k;
- keys.append( ed->items[i-1].key );
- }
- }
- return keys;
-}
-
-bool TQMetaProperty::writable() const
-{
- if ( !testFlags( Override ) || testFlags( Writable ) )
- return testFlags( Writable );
- const TQMetaObject* mo = (*meta);
- const TQMetaProperty* parent = mo->resolveProperty( this );
- return parent ? parent->writable() : FALSE;
-}
-
-/*!\internal
- */
-bool TQMetaProperty::stdSet() const
-{
- if ( !testFlags( Override ) || testFlags( Writable ) )
- return testFlags( StdSet );
- const TQMetaObject* mo = (*meta);
- const TQMetaProperty* parent = mo->resolveProperty( this );
- return parent ? parent->stdSet() : FALSE;
-}
-
-/*!\internal
- */
-int TQMetaProperty::id() const
-{
- return _id < 0 ? (*meta)->indexOfProperty( this, TRUE ) : _id;
-}
-
-/*! \internal
-*/
-void TQMetaProperty::clear()
-{
- t = n = 0;
- meta = 0;
- enumData = 0;
- _id = -1;
- flags = 0;
-}
-
-bool TQMetaProperty::isValid() const
-{
- if ( testFlags( UnresolvedEnum ) ) {
- if ( !enumData && (!meta || !(*meta)->enumerator( t, TRUE ) ) )
- return FALSE;
- }
- if ( !testFlags( Override ) || testFlags( Readable ) )
- return testFlags( Readable );
- const TQMetaObject* mo = (*meta);
- const TQMetaProperty* parent = mo->resolveProperty( this );
- return parent ? parent->isValid() : FALSE;
-}
-
-bool TQMetaProperty::isSetType() const
-{
- const TQMetaEnum* ed = enumData;
- if ( !enumData && meta )
- ed = (*meta)->enumerator( t, TRUE );
- return ( ed != 0 && ed->set );
-}
-
-bool TQMetaProperty::isEnumType() const
-{
- return testFlags( EnumOrSet );
-}
-
-
-
-/*!
- \fn const char* TQMetaProperty::type() const
-
- Returns the type of the property.
-*/
-
-/*!
- \fn const char* TQMetaProperty::name() const
-
- Returns the name of the property.
-*/
-
-/*!
- \fn bool TQMetaProperty::writable() const
-
- Returns TRUE if the property is writable; otherwise returns FALSE.
-
-*/
-
-/*! \fn bool TQMetaProperty::isValid() const
-
- \internal
-
- Returns whether the property is valid.
-*/
-
-/*!
- \fn bool TQMetaProperty::isEnumType() const
-
- Returns TRUE if the property's type is an enumeration value;
- otherwise returns FALSE.
-
- \sa isSetType(), enumKeys()
-*/
-
-/*!
- \fn bool TQMetaProperty::isSetType() const
-
- Returns TRUE if the property's type is an enumeration value that
- is used as set, i.e. if the enumeration values can be OR-ed
- together; otherwise returns FALSE. A set type is implicitly also
- an enum type.
-
- \sa isEnumType(), enumKeys()
-*/
-
-
-/*! Returns TRUE if the property is designable for object \a o;
- otherwise returns FALSE.
-
- If no object \a o is given, the function returns a static
- approximation.
- */
-bool TQMetaProperty::designable( TQObject* o ) const
-{
- if ( !isValid() || !writable() )
- return FALSE;
- if ( o ) {
- int idx = _id >= 0 ? _id : (*meta)->indexOfProperty( this, TRUE );
- return idx >= 0 && o->tqt_property( idx, 3, 0 );
- }
- if ( testFlags( DesignableOverride ) ) {
- const TQMetaObject* mo = (*meta);
- const TQMetaProperty* parent = mo->resolveProperty( this );
- return parent ? parent->designable() : FALSE;
- }
- return !testFlags( NotDesignable );
-}
-
-/*!
- Returns TRUE if the property is scriptable for object \a o;
- otherwise returns FALSE.
-
- If no object \a o is given, the function returns a static
- approximation.
- */
-bool TQMetaProperty::scriptable( TQObject* o ) const
-{
- if ( o ) {
- int idx = _id >= 0 ? _id : (*meta)->indexOfProperty( this, TRUE );
- return idx >= 0 && o->tqt_property( idx, 4, 0 );
- }
- if ( testFlags( ScriptableOverride ) ) {
- const TQMetaObject* mo = (*meta);
- const TQMetaProperty* parent = mo->resolveProperty( this );
- return parent ? parent->scriptable() : FALSE;
- }
- return !testFlags( NotScriptable );
-}
-
-/*!
- Returns TRUE if the property shall be stored for object \a o;
- otherwise returns FALSE.
-
- If no object \a o is given, the function returns a static
- approximation.
- */
-bool TQMetaProperty::stored( TQObject* o ) const
-{
- if ( !isValid() || !writable() )
- return FALSE;
- if ( o ) {
- int idx = _id >= 0 ? _id : (*meta)->indexOfProperty( this, TRUE );
- return idx >= 0 && o->tqt_property( idx, 5, 0 );
- }
- if ( testFlags( StoredOverride ) ) {
- const TQMetaObject* mo = (*meta);
- const TQMetaProperty* parent = mo->resolveProperty( this );
- return parent ? parent->stored() : FALSE;
- }
- return !testFlags( NotStored );
-}
-
-
-/*!
- Tries to reset the property for object \a o with a reset method.
- On success, returns TRUE; otherwise returns FALSE.
-
- Reset methods are optional, usually only a few properties support
- them.
-*/
-bool TQMetaProperty::reset( TQObject* o ) const
-{
- if ( !o )
- return FALSE;
- int idx = _id >= 0 ? _id : (*meta)->indexOfProperty( this, TRUE );
- if ( idx < 0 )
- return 0;
- return o->tqt_property( idx, 2, 0 );
-}
-
-
-/*! \enum TQMetaProperty::Flags
-
- \internal
-*/
-
-#endif // TQT_NO_PROPERTIES
-
-/*
- * TQMetaObjectCleanUp is used as static global object in the moc-generated cpp
- * files and deletes the TQMetaObject provided with setMetaObject. It sets the
- * TQObject reference to the metaObj to NULL when it is destroyed.
- */
-TQMetaObjectCleanUp::TQMetaObjectCleanUp( const char *mo_name, TQtStaticMetaObjectFunction func )
- : metaObject( 0 )
-{
-#ifdef TQT_THREAD_SUPPORT
- TQMutexLocker( tqt_global_mutexpool ?
- tqt_global_mutexpool->get( &qt_metaobjects ) : 0 );
-#endif // TQT_THREAD_SUPPORT
- if ( !qt_metaobjects )
- qt_metaobjects = new TQAsciiDict<void>( 257 );
- qt_metaobjects->insert( mo_name, (void*)func );
-
- qt_metaobjects_count++;
-}
-
-TQMetaObjectCleanUp::TQMetaObjectCleanUp()
- : metaObject( 0 )
-{
-}
-
-/*! \fn bool TQMetaProperty::testFlags( uint f ) const
- \internal
-*/
-
-TQMetaObjectCleanUp::~TQMetaObjectCleanUp()
-{
-#ifdef TQT_THREAD_SUPPORT
- TQMutexLocker( tqt_global_mutexpool ?
- tqt_global_mutexpool->get( &qt_metaobjects ) : 0 );
-#endif // TQT_THREAD_SUPPORT
- if ( !--qt_metaobjects_count ) {
- delete qt_metaobjects;
- qt_metaobjects = 0;
- }
- if ( metaObject ) {
- delete *metaObject;
- *metaObject = 0;
- metaObject = 0;
- }
-}
-
-void TQMetaObjectCleanUp::setMetaObject( TQMetaObject *&mo )
-{
-#if defined(QT_CHECK_RANGE)
- if (metaObject && metaObject != &mo)
- tqWarning( "TQMetaObjectCleanUp::setMetaObject: Double use of TQMetaObjectCleanUp!" );
-#endif
- metaObject = &mo;
-}