diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2019-04-21 23:28:33 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2019-04-21 23:28:33 +0900 |
commit | 1df632a0e6e550a5a100247c6b4713078e78f413 (patch) | |
tree | e8577c3d310285ebb4c8beea37998f408286bda3 /tqtinterface/qt4/src/kernel/tqmetaobject.cpp | |
parent | 012b00740f33c01949c88d7ea97e2dee81fabb41 (diff) | |
download | experimental-1df632a0e6e550a5a100247c6b4713078e78f413.tar.gz experimental-1df632a0e6e550a5a100247c6b4713078e78f413.zip |
Removed unnecessary and/or TDE-unrelated code.r14.0.7
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
Diffstat (limited to 'tqtinterface/qt4/src/kernel/tqmetaobject.cpp')
-rw-r--r-- | tqtinterface/qt4/src/kernel/tqmetaobject.cpp | 1792 |
1 files changed, 0 insertions, 1792 deletions
diff --git a/tqtinterface/qt4/src/kernel/tqmetaobject.cpp b/tqtinterface/qt4/src/kernel/tqmetaobject.cpp deleted file mode 100644 index 0476c8b..0000000 --- a/tqtinterface/qt4/src/kernel/tqmetaobject.cpp +++ /dev/null @@ -1,1792 +0,0 @@ -/**************************************************************************** -** -** Implementation of TQMetaObject class -** -** Created : 930419 -** -** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA. -** -** 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 "tqmetaobject.h" -#include "tqasciidict.h" - -#ifdef TQT_THREAD_SUPPORT -#include <private/tqmutexpool_p.h> -#endif // TQT_THREAD_SUPPORT - -#include <private/tqucom_p.h> - -#ifdef USE_QT4 - -// #include <private/qt4_qmetaobject_p.h> - -/*! - 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 ); - int n = numProperties( super ); - for( int i = 0; i < n; ++i ) { - if (property( i, super)) - l.append( property( i, super)->name() ); - else - l.append( "[TQt TQMetaObject::propertyNames was unable to find the Qt4 name for this property]" ); - } - return l; -} - -const char * TQMetaData::name() const { - return signature(); // Member name -} - -const TQUMethod* TQMetaData::method() const { - // FIXME - // Verify that this routine accurately fills internal_method_information! - printf("[WARNING] const TQUMethod* TQMetaData::method() partially implemented!\n\r"); - - if (!internal_method_information) { - internal_method_information = new TQUMethod; - internal_method_information->parameters = 0; - } - internal_method_information->name = QMetaMethod::signature(); - internal_method_information->count = QMetaMethod::parameterNames().count(); - if (internal_method_information->parameters) { - for (int i=0; i<internal_method_information->count; i++) { - if (internal_method_information->parameters[i].type) - delete internal_method_information->parameters[i].type; - } - delete [] internal_method_information->parameters; - } - internal_method_information->parameters = new TQUParameter[internal_method_information->count]; - for (int i=0; i<internal_method_information->count; i++) { - const_cast<TQUParameter&>(internal_method_information->parameters[i]).name = QMetaMethod::parameterNames().at(i).data(); -// const_cast<TQUParameter&>(internal_method_information->parameters[i]).type = new TQUType; -// const_cast<TQUParameter&>(internal_method_information->parameters[i]).type.desc = QMetaMethod::parameterTypes().at(i).data(); - const_cast<TQUParameter&>(internal_method_information->parameters[i]).typeExtra = 0; - const_cast<TQUParameter&>(internal_method_information->parameters[i]).inOut = 3; - } - return internal_method_information; -} - -TQMetaEnum::TQMetaEnum() : QMetaEnum() { internal_item_list = 0; } - -uint TQMetaEnum::count() const { - return QMetaEnum::keyCount(); -} - -TQMetaEnum::Item* TQMetaEnum::items() const { - if (internal_item_list) - delete [] internal_item_list; - int internal_item_count = count(); - internal_item_list = new Item[internal_item_count]; - for (int i=0; i<internal_item_count;i++) { - internal_item_list[i].key = QMetaEnum::key(i); - internal_item_list[i].value = QMetaEnum::value(i); - } - return internal_item_list; -} - -TQMetaData::TQMetaData() : QMetaMethod() {} - -TQMetaProperty::TQMetaProperty() : QMetaProperty() {} - -/*! - 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 ); - QMetaEnum ed = enumerator(); - for( uint i = 0; i < ed.keyCount(); ++i ) { - uint j = 0; - while ( j < i && ed.value(j) != ed.value(i) ) - ++j; - if ( i == j ) - l.append( ed.key(i) ); - } - return l; -} - -bool TQMetaProperty::isSetType() const { - return isFlagType (); -} - -int TQMetaProperty::keyToValue( const char* key ) const { - return enumerator().keyToValue(key); -} - -const char* TQMetaProperty::valueToKey( int value ) const { - return enumerator().valueToKey(value); -} - -int TQMetaProperty::keysToValue( const TQStrList& keys_in ) const { - TQString tqs = ""; - TQStrList keys = keys_in; - char *key; - for ( key = keys.first(); key; key = keys.next() ) { - tqs = tqs + "|" + key; - } - tqs.remove(0,1); - return enumerator().keysToValue(TQCString(tqs)); -} - -TQStrList TQMetaProperty::valueToKeys( int value ) const { - TQStrList keys; - QByteArray qba = enumerator().valueToKeys(value); - TQStringList keys_out = TQStringList::split("|", TQString(TQCString(qba))); - for ( TQStringList::Iterator it = keys_out.begin(); it != keys_out.end(); ++it ) { - keys.append(*it); - } - return keys; -} - -bool TQMetaProperty::writable() const { - return isWritable(); -} - -const char* TQMetaProperty::type() const { - return QMetaProperty::typeName(); -} - -bool TQMetaProperty::designable( TQT_BASE_OBJECT_NAME *o ) const { - return isDesignable(o); -} - -bool TQMetaProperty::scriptable( TQT_BASE_OBJECT_NAME *o ) const { - return isScriptable(o); -} - -bool TQMetaProperty::stored( TQT_BASE_OBJECT_NAME *o ) const { - return isStored(o); -} - -/*!\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; - - // [FIXME] - printf("[WARNING] bool TQMetaProperty::stdSet() const unimplemented\n\r"); - return FALSE; -} - -TQMetaObject::TQMetaObject( const char * const class_name, TQMetaObject *superclass, const TQMetaData * const slot_data, int n_Q_SLOTS, const TQMetaData * const signal_data, int n_Q_SIGNALS, -#ifndef TQT_NO_PROPERTIES - const TQMetaProperty *const prop_data, int n_props, const TQMetaEnum *const enum_data, int n_enums, -#endif // TQT_NO_PROPERTIES - const TQClassInfo *const class_info, int n_info ) : QMetaObject() { - printf("[WARNING] TQMetaObject() constructor unimplemented\n\r"); // [FIXME] -} - -#ifndef TQT_NO_PROPERTIES -TQMetaObject::TQMetaObject( const char * const class_name, TQMetaObject *superclass, const TQMetaData * const slot_data, int n_Q_SLOTS, const TQMetaData * const signal_data, int n_Q_SIGNALS, const TQMetaProperty *const prop_data, int n_props, const TQMetaEnum *const enum_data, int n_enums, bool (*qt_static_property)(TQObject*, int, int, TQVariant*), const TQClassInfo *const class_info, int n_info ) : QMetaObject() { - printf("[WARNING] TQMetaObject() constructor unimplemented\n\r"); // [FIXME] -} -#endif // TQT_NO_PROPERTIES - -TQStrList TQMetaObject::slotNames( bool super ) const { - printf("[WARNING] TQStrList slotNames( bool super = FALSE ) unimplemented\n\r"); - return TQStrList(); -} - -TQStrList TQMetaObject::signalNames( bool super ) const { - printf("[WARNING] TQStrList signalNames( bool super = FALSE ) const unimplemented\n\r"); - return TQStrList(); -} - -/*! - Returns the number of Q_SLOTS for this class. - - If \a super is TRUE, inherited Q_SLOTS are included. - - \sa slotNames() -*/ -int TQMetaObject::numSlots( bool super ) const // number of Q_SLOTS -{ - int i; - int n=0; - for (i=0;i<methodCount();i++) { - if (method(i).methodType() == QMetaMethod::Slot) { - n++; - } - } - - if ( !super || !superClass() ) - return n; - return n + tqsuperClass()->numSlots( super ); -} - -/*! - 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 classInfoCount() + ((super && tqsuperClass())?tqsuperClass()->numClassInfo(super):0); -} - -/*! - Returns the number of Q_SIGNALS for this class. - - If \a super is TRUE, inherited Q_SIGNALS are included. - - \sa signalNames() -*/ -int TQMetaObject::numSignals( bool super ) const // number of Q_SIGNALS -{ - int i; - int n=0; - for (i=0;i<methodCount();i++) { - if (method(i).methodType() == QMetaMethod::Signal) { - n++; - } - } - - if ( !super || !superClass() ) - return n; - return n + tqsuperClass()->numSignals( super ); -} - -#if 0 -/*! \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. - - [FIXME]: Superclass handling is badly broken - */ -const TQMetaData* TQMetaObject::slot( int index, bool super ) const -{ - QMetaMethod mm; - const QMetaMethod *mr; - int idx = index - ( super ? methodOffset() : 0 ); -// if ( slotDict && idx >= 0 && idx < (int) slotDict->count() ) { - if ( idx >= 0 && idx < numSlots(true) ) { -// return slotData + idx; - mm = method(idx); - mr = &mm; - return static_cast<const TQMetaData*>(mr); - } - if ( !super || !superClass() ) - return 0; - return tqsuperClass()->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. - - [FIXME]: Superclass handling is badly broken - */ -const TQMetaData* TQMetaObject::signal( int index, bool super ) const -{ - QMetaMethod mm; - const QMetaMethod *mr; - int idx = index - ( super ? methodOffset() : 0 ); -// if ( signalDict && idx >= 0 && idx < (int) signalDict->count() ) { - if ( idx >= 0 && idx < numSignals(true) ) { -// return signalData + idx; - mm = method(idx); - mr = &mm; - return static_cast<const TQMetaData*>(mr); - } - if ( !super || !superClass() ) - return 0; - return tqsuperClass()->signal( index, super ); -} -#endif - -/*! \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. - - [FIXME]: Superclass handling is badly broken - */ -const TQMetaData* TQMetaObject::slot( int index, bool super ) const -{ - QMetaMethod mm; - const QMetaMethod *mr; - int idx = index - ( super ? methodOffset() : 0 ); -// if ( slotDict && idx >= 0 && idx < (int) slotDict->count() ) { - if ( idx >= 0 && idx < numSlots(true) ) { -// return slotData + idx; - mm = method(idx); - mr = &mm; - return static_cast<const TQMetaData*>(mr); - } - if ( !super || !superClass() ) - return 0; - return tqsuperClass()->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. - - [FIXME]: Superclass handling is badly broken - */ -const TQMetaData* TQMetaObject::signal( int index, bool super ) const -{ - QMetaMethod mm; - const QMetaMethod *mr; - int idx = index - ( super ? methodOffset() : 0 ); -// if ( signalDict && idx >= 0 && idx < (int) signalDict->count() ) { - if ( idx >= 0 && idx < numSignals(true) ) { -// return signalData + idx; - mm = method(idx); - mr = &mm; - return static_cast<const TQMetaData*>(mr); - } - if ( !super || !superClass() ) - return 0; - return tqsuperClass()->signal( index, super ); -} - -/*! \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. - - [FIXME]: Superclass handling is badly broken - */ -int TQMetaObject::findSlot( const char* n, bool super ) const -{ -// TQStrList l( FALSE ); -// int m = methodCount(); -// for( int i = 0; i < m; ++i ) { -// // if ( normalizedSignature(slot( i, super)->signature()) == QByteArray(n) ) { -// if ( normalizedSignature(method(i).signature()) == QByteArray(n) ) { -// if (method(i).methodType() == QMetaMethod::Slot) { -// return i; -// } -// } -// } -// return -1; - - if (super) printf("[WARNING] In TQMetaObject::findSlot(), superclasses are not being searched for the slot\n\r"); - return indexOfSlot(normalizedSignature(n)); -} - -/*! \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. - - [FIXME]: Superclass handling is badly broken -*/ -int TQMetaObject::findSignal( const char* n, bool super ) const -{ -// TQStrList l( FALSE ); -// int m = methodCount(); -// for( int i = 0; i < m; ++i ) { -// // if ( normalizedSignature(signal( i, super)->signature()) == QByteArray(n) ) { -// if ( normalizedSignature(method(i).signature()) == QByteArray(n) ) { -// if (method(i).methodType() == QMetaMethod::Signal) { -// return i; -// } -// } -// } -// return -1; - - if (super) printf("[WARNING] In TQMetaObject::findSignal(), superclasses are not being searched for the signal\n\r"); - return indexOfSignal(normalizedSignature(n)); -} - -#ifndef QT_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 properties -{ - int i; - int n=0; - for (i=0;i<propertyCount();i++) { -// if (property(i).propertyType() == QMetaProperty::Property) { - n++; -// } - } - - if ( !super || !superClass() ) - return n; - return n + tqsuperClass()->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() - - [FIXME]: Superclass handling is badly broken - */ -static QMetaProperty tqmo_propmethod_curprop; -const TQMetaProperty* TQMetaObject::property( int index, bool super ) const -{ - QMetaProperty mp; - const QMetaProperty *pr; - int idx = index - ( super ? propertyOffset() : 0 ); -// if ( d->propData && idx >= 0 && idx < (int)d->numPropData ) - if ( idx >= 0 && idx < numProperties(true) ) - tqmo_propmethod_curprop = QMetaObject::property(idx); - return static_cast<const TQMetaProperty*>(&tqmo_propmethod_curprop); - if ( !super || !superClass() ) - return 0; - return tqsuperClass()->property( index, super ); -} - -int TQMetaObject::findProperty( const char *name, bool super ) const { - TQ_UNUSED(name); - return indexOfProperty(name); -} - -TQMetaObject * TQMetaObject::tqsuperClass() const { - return static_cast<TQMetaObject*>(const_cast<QMetaObject*>(superClass())); -} - -const char * TQMetaObject::tqsuperClassName() const { - return static_cast<TQMetaObject*>(const_cast<QMetaObject*>(superClass()))->className(); -} - -#endif // QT_NO_PROPERTIES - -/*! - 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 < QMetaObject::classInfoCount() ) - return static_cast<TQClassInfo*>(&(QMetaObject::classInfo(index))); - if ( !super || !superClass() ) - return 0; - return tqsuperClass()->classInfo( index - QMetaObject::classInfoCount(), 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 < QMetaObject::classInfoCount(); ++i ) { - if ( qstrcmp( QMetaObject::classInfo(i).name(), name ) == 0 ) - return QMetaObject::classInfo(i).value(); - } - if ( !super || !superClass() ) - return 0; - return tqsuperClass()->classInfo( name, super ); -} - -/*!\internal - - */ -TQStrList TQMetaObject::enumeratorNames( bool super ) const -{ - TQStrList l( FALSE ); - - if ( tqsuperClass() && super ) { - TQStrList sl = tqsuperClass()->enumeratorNames( super ); - for ( TQStrListIterator slit( sl ); slit.current(); ++slit ) - l.append( slit.current() ); - } - - for( int i = 0; i < QMetaObject::enumeratorCount(); ++i ) { -// if ( d->enumData[i].items ) - if (QMetaObject::enumerator(i).name() != "") - l.append( QMetaObject::enumerator(i).name() ); - } - - return l; -} - -/*!\internal - */ -const TQMetaEnum* TQMetaObject::enumerator( const char* name, bool super ) const -{ - for( int i = 0; i < QMetaObject::enumeratorCount(); ++i ) - if ( qstrcmp( QMetaObject::enumerator(i).name(), name ) == 0 ) - return static_cast<TQMetaEnum*>(&(QMetaObject::enumerator(i))); - if ( !super || !superClass() ) - return 0; - return tqsuperClass()->enumerator( name, super ); -} - -#else // USE_QT4 - -/*! - \class TQMetaData tqmetaobject.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 tqmetaobject.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 tqmetaobject.h - \brief The TQMetaObject class contains meta information about TQt objects. - - \ingroup objectmodel - - The Meta Object System in TQt is responsible for the Q_SIGNALS and - Q_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 Q_SIGNALS and Q_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 tqmoc.html tqmoc (Meta Object Compiler)\endlink - -*/ - - -/***************************************************************************** - The private object. - *****************************************************************************/ - -// extra flags from tqmoc.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), - qt_static_property(0), -#endif - classInfo(0), numClassInfo(0) {} -#ifndef TQT_NO_PROPERTIES - const TQMetaEnum *enumData; - int numEnumData; - const TQMetaProperty *propData; - int numPropData; - bool (*qt_static_property)(TQObject*, int, int, TQVariant*); -#endif - const TQClassInfo *classInfo; - int numClassInfo; -}; - - -/***************************************************************************** - Internal dictionary for fast access to class members - *****************************************************************************/ - -#if defined(TQ_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_Q_SLOTS, - const TQMetaData *const signal_data, int n_Q_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_Q_SLOTS ); - signalDict = init( signalData = signal_data, n_Q_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_Q_SLOTS, - const TQMetaData *const signal_data, int n_Q_SIGNALS, - const TQMetaProperty *const prop_data, int n_props, - const TQMetaEnum *const enum_data, int n_enums, - bool (*qt_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_Q_SLOTS ); - signalDict = init( signalData = signal_data, n_Q_SIGNALS ); - - d = new TQMetaObjectPrivate; - reserved = 0; - - d->propData = prop_data; - d->numPropData = n_props; - d->enumData = enum_data; - d->numEnumData = n_enums; - d->qt_static_property = qt_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 Q_SLOTS for this class. - - If \a super is TRUE, inherited Q_SLOTS are included. - - \sa slotNames() -*/ -int TQMetaObject::numSlots( bool super ) const // number of Q_SLOTS -{ - int n = slotDict ? slotDict->count() : 0; - if ( !super || !superclass ) - return n; - return n + superclass->numSlots( super ); -} - -/*! - Returns the number of Q_SIGNALS for this class. - - If \a super is TRUE, inherited Q_SIGNALS are included. - - \sa signalNames() -*/ -int TQMetaObject::numSignals( bool super ) const // number of Q_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 Q_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 Q_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 Q_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(TQT_CHECK_RANGE) - if ( offset != -1 ) { - qWarning( "TQMetaObject::findSignal:%s: Conflict with %s::%s", - className(), mo->className(), n ); - return offset; - } -#endif - offset = mo->signalOffset() + ( md - mo->signalData ); -#if !defined(TQT_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 Q_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_Q_SLOTS, - const TQMetaData * const signal_data, int n_Q_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_Q_SLOTS, - signal_data, n_Q_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_Q_SLOTS, - const TQMetaData * const signal_data, int n_Q_SIGNALS, - const TQMetaProperty * const prop_data, int n_props, - const TQMetaEnum * const enum_data, int n_enums, - bool (*qt_static_property)(TQObject*, int, int, TQVariant*), - const TQClassInfo * const class_info, int n_info ) -{ - return new TQMetaObject( classname, superclassobject, slot_data, n_Q_SLOTS, - signal_data, n_Q_SIGNALS, - prop_data, n_props, - enum_data, n_enums, - qt_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 Q_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 tqmoc 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 Q_SIGNALS. - - If \a super is TRUE, inherited Q_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 Q_SLOTS. - - If \a super is TRUE, inherited Q_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::tqmetaObject( 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::qt_static_property( TQObject* o, int id, int f, TQVariant* v) -{ - if ( d->qt_static_property ) - return d->qt_static_property( o, id, f, v ); - else if ( o ) // compatibility - return o->qt_property( id, f, v ); - else if ( superclass ) - return superclass->qt_static_property( o, id, f, v ); - switch ( f ) { - case 3: case 4: case 5: - return TRUE; - default: - return FALSE; - } -} - - -/*! - \class TQMetaProperty tqmetaobject.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->qt_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->qt_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->qt_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->qt_property( idx, 2, 0 ); -} - - -/*! \enum TQMetaProperty::Flags - - \internal -*/ - -#endif // TQT_NO_PROPERTIES - -/* - * TQMetaObjectCleanUp is used as static global object in the tqmoc-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 ) - : tqmetaObject( 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() - : tqmetaObject( 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 ( tqmetaObject ) { - delete *tqmetaObject; - *tqmetaObject = 0; - tqmetaObject = 0; - } -} - -void TQMetaObjectCleanUp::setMetaObject( TQMetaObject *&mo ) -{ -#if defined(TQT_CHECK_RANGE) - if ( tqmetaObject ) - qWarning( "TQMetaObjectCleanUp::setMetaObject: Double use of TQMetaObjectCleanUp!" ); -#endif - tqmetaObject = &mo; -} - -#endif // USE_QT4 |