QScriptDeclarativeClass::Object *QScriptDeclarativeClass::object(const QScriptValue &v) { QScriptValuePrivate *d = QScriptValuePrivate::get(v); if (!d || !d->isJSC()) return 0; return QScriptEnginePrivate::declarativeObject(d->jscValue); }
QScriptDeclarativeClass::Object *QScriptDeclarativeClass::object(const QScriptValue &v) { QScriptValuePrivate *d = QScriptValuePrivate::get(v); if (!d || !d->isJSC() || !d->jscValue.inherits(&QScriptObject::info)) return 0; QScriptObject *scriptObject = static_cast<QScriptObject*>(JSC::asObject(d->jscValue)); QScriptObjectDelegate *delegate = scriptObject->delegate(); if (!delegate || (delegate->type() != QScriptObjectDelegate::DeclarativeClassObject)) return 0; return static_cast<QScript::DeclarativeObjectDelegate*>(delegate)->object(); }
QScriptValue QScriptDeclarativeClass::property(const QScriptValue &v, const Identifier &name) { QScriptValuePrivate *d = QScriptValuePrivate::get(v); if (!d->isObject()) return QScriptValue(); JSC::ExecState *exec = d->engine->currentFrame; JSC::JSObject *object = d->jscValue.getObject(); JSC::PropertySlot slot(const_cast<JSC::JSObject*>(object)); JSC::JSValue result; JSC::Identifier id(exec, (JSC::UString::Rep *)name); if (const_cast<JSC::JSObject*>(object)->getOwnPropertySlot(exec, id, slot)) { result = slot.getValue(exec, id); return d->engine->scriptValueFromJSCValue(result); } return QScriptValue(); }
QScriptDeclarativeClass::Value QScriptDeclarativeClass::functionValue(const QScriptValue &v, const Identifier &name) { QScriptValuePrivate *d = QScriptValuePrivate::get(v); if (!d->isObject()) return Value(); QScript::APIShim shim(d->engine); JSC::ExecState *exec = d->engine->currentFrame; JSC::JSObject *object = d->jscValue.getObject(); JSC::PropertySlot slot(const_cast<JSC::JSObject*>(object)); JSC::JSValue result; JSC::Identifier id(exec, (JSC::UString::Rep *)name); if (const_cast<JSC::JSObject*>(object)->getOwnPropertySlot(exec, id, slot)) { result = slot.getValue(exec, id); if (QScript::isFunction(result)) return jscToValue(result); } return Value(); }