⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metadatabase.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
📖 第 1 页 / 共 3 页
字号:
{    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return QValueList<Connection>();    }    QValueList<Connection>::Iterator it = r->connections.begin();    QValueList<Connection> ret;    QValueList<Connection>::Iterator conn;    while ( ( conn = it ) != r->connections.end() ) {	++it;	if ( (*conn).sender == object ||	     (*conn).receiver == object )	    ret << *conn;    }    return ret;}void MetaDataBase::doConnections( QObject *o ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return;    }    QObject *sender = 0, *receiver = 0;    QObjectList *l = 0;    QValueList<Connection>::Iterator it = r->connections.begin();    for ( ; it != r->connections.end(); ++it ) {	Connection conn = *it;	if ( qstrcmp( conn.sender->name(), o->name() ) == 0 ) {	    sender = o;	} else {	    l = o->queryList( 0, conn.sender->name(), FALSE );	    if ( !l || !l->first() ) {		delete l;		continue;	    }	    sender = l->first();	    delete l;	}	if ( qstrcmp( conn.receiver->name(), o->name() ) == 0 ) {	    receiver = o;	} else {	    l = o->queryList( 0, conn.receiver->name(), FALSE );	    if ( !l || !l->first() ) {		delete l;		continue;	    }	    receiver = l->first();	    delete l;	}	QString s = "2""%1";	s = s.arg( conn.signal );	QString s2 = "1""%1";	s2 = s2.arg( conn.slot );	QStrList signalList = sender->metaObject()->signalNames( TRUE );	QStrList slotList = receiver->metaObject()->slotNames( TRUE );	// avoid warnings	if ( signalList.find( conn.signal ) == -1 ||	     slotList.find( conn.slot ) == -1 )	    continue;	QObject::connect( sender, s, receiver, s2 );    }}bool MetaDataBase::hasSlot( QObject *o, const QCString &slot, bool onlyCustom ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return FALSE;    }    if ( !onlyCustom ) {	QStrList slotList = o->metaObject()->slotNames( TRUE );	if ( slotList.find( slot ) != -1 )	    return TRUE;	if ( o->inherits( "FormWindow" ) ) {	    o = ( (FormWindow*)o )->mainContainer();	    slotList = o->metaObject()->slotNames( TRUE );	    if ( slotList.find( slot ) != -1 )		return TRUE;	}	if ( o->inherits( "CustomWidget" ) ) {	    MetaDataBase::CustomWidget *w = ( (::CustomWidget*)o )->customWidget();	    for ( QValueList<Function>::Iterator it = w->lstSlots.begin(); it != w->lstSlots.end(); ++it ) {		QCString s = (*it).function;		if ( !s.data() )		    continue;		if ( s == slot )		    return TRUE;	    }	}    }    for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) {	Function f = *it;	if ( normalizeFunction( f.function ) == normalizeFunction( slot ) && f.type == "slot" )	    return TRUE;    }    return FALSE;}bool MetaDataBase::isSlotUsed( QObject *o, const QCString &slot ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",	          o, o->name(), o->className() );	return FALSE;    }    QValueList<Connection> conns = connections( o );    for ( QValueList<Connection>::Iterator it = conns.begin(); it != conns.end(); ++it ) {	if ( (*it).slot == slot )	return TRUE;    }    return FALSE;}void MetaDataBase::addFunction( QObject *o, const QCString &function, const QString &specifier,				const QString &access, const QString &type, const QString &language,				const QString &returnType ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return;    }    Function f;    f.function = function;    f.specifier = specifier;    f.access = access;    f.type = type;    f.language = language;    f.returnType = returnType;    QValueList<MetaDataBase::Function>::Iterator it = r->functionList.find( f );    if ( it != r->functionList.end() )	r->functionList.remove( it );    r->functionList.append( f );    ( (FormWindow*)o )->formFile()->addFunctionCode( f );}void MetaDataBase::setFunctionList( QObject *o, const QValueList<Function> &functionList ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return;    }    r->functionList = functionList;}void MetaDataBase::removeFunction( QObject *o, const QCString &function, const QString &specifier,				   const QString &access, const QString &type, const QString &language,				   const QString &returnType ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return;    }    for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) {	if ( MetaDataBase::normalizeFunction( (*it).function ) ==	     MetaDataBase::normalizeFunction( function ) &&	     (*it).specifier == specifier &&	     (*it).access == access &&	     (*it).type == type &&	     ( language.isEmpty() || (*it).language == language ) &&	       ( returnType.isEmpty() || (*it).returnType == returnType ) ) {	    ( (FormWindow*)o )->formFile()->removeFunctionCode( *it );	    r->functionList.remove( it );	    break;	}    }}void MetaDataBase::removeFunction( QObject *o, const QString &function ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return;    }    for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) {	if ( normalizeFunction( (*it).function ) == normalizeFunction( function ) ) {	    ( (FormWindow*)o )->formFile()->removeFunctionCode( *it );	    r->functionList.remove( it );	    break;	}    }}QValueList<MetaDataBase::Function> MetaDataBase::functionList( QObject *o, bool onlyFunctions ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return QValueList<Function>();    }    if ( !onlyFunctions )	return r->functionList;    QValueList<Function> fList;    for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) {	if ( (*it).type == "function" )	    fList.append( *it );    }    return fList;}QValueList<MetaDataBase::Function> MetaDataBase::slotList( QObject *o ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return QValueList<Function>();    }    QValueList<Function> slotList;    for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) {	if ( (*it).type == "slot" )	    slotList.append( *it );    }    return slotList;}void MetaDataBase::changeFunction( QObject *o, const QString &function, const QString &newName,				   const QString &returnType ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return;    }    for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) {	Function f = *it;	if ( normalizeFunction( f.function ) == normalizeFunction( function ) ) {	    (*it).function = newName;	    if ( !returnType.isNull() )		(*it).returnType = returnType;	    return;	}    }}void MetaDataBase::changeFunctionAttributes( QObject *o, const QString &oldName, const QString &newName,					     const QString &specifier, const QString &access,					     const QString &type, const QString &language,					     const QString &returnType ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return;    }    for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) {	Function f = *it;	if ( normalizeFunction( f.function ) == normalizeFunction( oldName ) ) {	    (*it).function = newName;	    (*it).specifier = specifier;	    (*it).access = access;	    (*it).type = type;	    (*it).language = language;	    (*it).returnType = returnType;	    return;	}    }}bool MetaDataBase::hasFunction( QObject *o, const QCString &function, bool onlyCustom ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return FALSE;    }    if ( !onlyCustom ) {	QStrList functionList = o->metaObject()->slotNames( TRUE );	if ( functionList.find( function ) != -1 )	    return TRUE;	if ( o->inherits( "FormWindow" ) ) {	    o = ( (FormWindow*)o )->mainContainer();	    functionList = o->metaObject()->slotNames( TRUE );	    if ( functionList.find( function ) != -1 )		return TRUE;	}	if ( o->inherits( "CustomWidget" ) ) {	    MetaDataBase::CustomWidget *w = ( (::CustomWidget*)o )->customWidget();	    for ( QValueList<Function>::Iterator it = w->lstSlots.begin(); it != w->lstSlots.end(); ++it ) {		QCString s = (*it).function;		if ( !s.data() )		    continue;		if ( s == function )		    return TRUE;	    }	}    }    for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) {	Function f = *it;	if ( normalizeFunction( f.function ) == normalizeFunction( function ) )	    return TRUE;    }    return FALSE;}QString MetaDataBase::languageOfFunction( QObject *o, const QCString &function ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return QString::null;    }    QString fu = normalizeFunction( function );    for ( QValueList<Function>::Iterator it = r->functionList.begin(); it != r->functionList.end(); ++it ) {	if ( fu == normalizeFunction( (*it).function ) )	    return (*it).language;    }    return QString::null;}bool MetaDataBase::addCustomWidget( CustomWidget *wid ){    setupDataBase();    for ( CustomWidget *w = cWidgets->first(); w; w = cWidgets->next() ) {	if ( *wid == *w ) {	    for ( QValueList<QCString>::ConstIterator it = wid->lstSignals.begin(); it != wid->lstSignals.end(); ++it ) {		if ( !w->hasSignal( *it ) )		    w->lstSignals.append( *it );	    }	    for ( QValueList<Function>::ConstIterator it2 = wid->lstSlots.begin(); it2 != wid->lstSlots.end(); ++it2 ) {		if ( !w->hasSlot( MetaDataBase::normalizeFunction( (*it2).function ).latin1() ) )		    w->lstSlots.append( *it2 );	    }	    for ( QValueList<Property>::ConstIterator it3 = wid->lstProperties.begin(); it3 != wid->lstProperties.end(); ++it3 ) {		if ( !w->hasProperty( (*it3).property ) )		    w->lstProperties.append( *it3 );	    }	    delete wid;	    return FALSE;	}    }    WidgetDatabaseRecord *r = new WidgetDatabaseRecord;    r->name = wid->className;    r->group = WidgetDatabase::widgetGroup( "Custom" );    r->toolTip = wid->className;    r->icon = new QIconSet( *wid->pixmap, *wid->pixmap );    r->isContainer = wid->isContainer;    wid->id = WidgetDatabase::addCustomWidget( r );    cWidgets->append( wid );    return TRUE;}void MetaDataBase::removeCustomWidget( CustomWidget *w ){    cWidgets->removeRef( w );}QPtrList<MetaDataBase::CustomWidget> *MetaDataBase::customWidgets(){    setupDataBase();    return cWidgets;}MetaDataBase::CustomWidget *MetaDataBase::customWidget( int id ){    for ( CustomWidget *w = cWidgets->first(); w; w = cWidgets->next() ) {	if ( id == w->id )	    return w;    }    return 0;}bool MetaDataBase::isWidgetNameUsed( CustomWidget *wid ){    for ( CustomWidget *w = cWidgets->first(); w; w = cWidgets->next() ) {	if ( w == wid )	    continue;	if ( wid->className == w->className )	    return TRUE;    }    return FALSE;}bool MetaDataBase::hasCustomWidget( const QString &className ){    for ( CustomWidget *w = cWidgets->first(); w; w = cWidgets->next() ) {	if ( w->className == className )	    return TRUE;    }    return FALSE;}void MetaDataBase::setTabOrder( QWidget *w, const QWidgetList &order ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*) w );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  w, w->name(), w->className() );	return;    }    r->tabOrder = order;}QWidgetList MetaDataBase::tabOrder( QWidget *w ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*) w );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  w, w->name(), w->className() );	return QWidgetList();    }    return r->tabOrder;}void MetaDataBase::setIncludes( QObject *o, const QValueList<Include> &incs ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return;    }    r->includes = incs;}QValueList<MetaDataBase::Include> MetaDataBase::includes( QObject *o ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return QValueList<Include>();    }    return r->includes;}void MetaDataBase::setForwards( QObject *o, const QStringList &fwds ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return;    }    r->forwards = fwds;}QStringList MetaDataBase::forwards( QObject *o ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return QStringList();    }    return r->forwards;}void MetaDataBase::setVariables( QObject *o, const QValueList<Variable> &vars ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return;    }    r->variables = vars;}void MetaDataBase::addVariable( QObject *o, const QString &name, const QString &access ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );    if ( !r ) {	qWarning( "No entry for %p (%s, %s) found in MetaDataBase",		  o, o->name(), o->className() );	return;    }    Variable v;    v.varName = name;    v.varAccess = access;    r->variables << v;}void MetaDataBase::removeVariable( QObject *o, const QString &name ){    setupDataBase();    MetaDataBaseRecord *r = db->find( (void*)o );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -