QScriptValueImpl Object::method_propertyIsEnumerable(QScriptContextPrivate *context, QScriptEnginePrivate *eng, QScriptClassInfo *) { bool result = false; if (context->thisObject().isObject() && (context->argumentCount() > 0)) { QScriptValueImpl arg = context->argument(0); QScriptNameIdImpl *id = 0; if (arg.isString()) id = arg.stringValue(); if (! id || ! id->unique) { QString str = arg.toString(); id = eng->nameId(str); } QScript::Member member; QScriptValueImpl base; QScriptValueImpl self = context->thisObject(); if (self.resolve(id, &member, &base, QScriptValue::ResolveLocal, QScript::Read)) { result = ! member.dontEnum(); if (result) { QScriptValueImpl tmp; base.get(member, &tmp); result = tmp.isValid(); } } } return (QScriptValueImpl(result)); }
bool QScriptValueIteratorImpl::acceptsMember(const QScriptValueImpl &o, const QScript::Member &m) const { if (!m.isValid() || (!m_ignoresDontEnum && m.dontEnum()) || (m.isSetter() && !m.isGetter())) { return false; } if (!m_enumerateProto || QScriptEnginePrivate::strictlyEquals(o, m_frontObject)) return true; // make sure it's not a shadowed property QScript::Member dummy; QScriptValueImpl base; QScriptNameIdImpl *id; if (m.nameId()) { id = m.nameId(); } else { QScriptEnginePrivate *eng_p = m_frontObject.engine(); id = eng_p->nameId(QScript::numberToString(m.id())); } m_frontObject.resolve(id, &dummy, &base, QScriptValue::ResolvePrototype, QScript::Read); return QScriptEnginePrivate::strictlyEquals(base, o); }