You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tqtinterface/qtinterface/tqmetaobject.cpp

154 lines
3.7 KiB

/*
Copyright (C) 2010 Timothy Pearson <kb9vqf@pearsoncomputing.net>
This library 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 of the License, or (at your option) any later version.
This library is distributed 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <tqt.h>
#include <tqmetaobject.h>
#ifdef USE_QT4
/*!
Returns the number of slots for this class.
If \a super is TRUE, inherited slots are included.
\sa slotNames()
*/
int QMetaObject::numSlots( bool super ) const // number of slots
{
int i;
int n;
for (i=0;i<methodCount();i++) {
if (method(i).methodType() == QMetaMethod::Slot) {
n++;
}
}
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 QMetaObject::numSignals( bool super ) const // number of signals
{
int i;
int n;
for (i=0;i<methodCount();i++) {
if (method(i).methodType() == QMetaMethod::Signal) {
n++;
}
}
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.
FIXME: Superclass handling is badly broken
*/
const QMetaMethod* QMetaObject::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 mr;
}
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.
FIXME: Superclass handling is badly broken
*/
const QMetaMethod* QMetaObject::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 mr;
}
if ( !super || !superClass() )
return 0;
return superClass()->signal( index, super );
}
/*!
Returns a list with the names of all this class's signals.
If \a super is TRUE, inherited signals are included.
*/
QStringList QMetaObject::signalNames( bool super ) const
{
QStringList l( FALSE );
int n = numSignals( super );
for( int i = 0; i < n; ++i ) {
l.append( signal(i, super)->signature() );
}
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()
*/
QStringList QMetaObject::slotNames( bool super ) const
{
QStringList l( FALSE );
int n = numSlots( super );
for( int i = 0; i < n; ++i )
l.append( slot( i, super)->signature() );
return l;
}
#endif // USE_QT4