QVariant QuickInterpreter::call(QObject *ctx, const QString &func, const QVariantList &args) { QSList l; for (int i=0; i<args.size(); ++i) { const QVariant &v = args.at(i); switch (v.type()) { case QMetaType::QObjectStar: l.append(wrap(qvariant_cast<QObject *>(v))); break; case QMetaType::VoidStar: qWarning("QuickInterpreter::call: don't know what to do with a " "QVariant::VoidPointer here..."); break; default: { QuickScriptVariant qsvar(this, v); if (qsvar.isNative()) l.append(qsvar.toNative()); else l.append(qsvar); break; } } } return call(ctx, func, l); }
void QuickInterpreter::setVariable(QObject *context, const QString &func, const QVariant &value) { QSObject val; switch(value.type()) { case QMetaType::QObjectStar: val = wrap(qvariant_cast<QObject *>(value)); break; case QMetaType::VoidStar: qWarning("QuickInterpreter::setVariable: don't know what to do with " "QVariant::VoidPointer here..."); return; default: { QuickScriptVariant qsvar(this, value); if (qsvar.isNative()) val = qsvar.toNative(); else val = qsvar; break; } } if (context) wrap(context).put(func, val); else env()->globalObject().put(func, val); }
QSArgument QuickInterpreter::call( QObject *ctx, const QString &func, const QSArgumentList &args ) { QSList l; for ( QSArgumentList::ConstIterator it = args.begin(); it != args.end(); ++it ) { switch ( (*it).type() ) { case QSArgument::Variant: { QuickScriptVariant qsvar(this, (*it).variant()); if (qsvar.isNative()) l.append(qsvar.toNative()); else l.append(qsvar); break; } case QSArgument::QObjectPtr: l.append( wrap( (*it).qobject() ) ); break; case QSArgument::VoidPointer: qWarning( "QuickInterpreter::call: don't know what to do with a " "QSArgument::VoidPointer here..." ); break; default: break; } } return call( ctx, func, l ); }