Example #1
0
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);
}
Example #2
0
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 );
}