KJS::Value JSObjectProxy::get( KJS::ExecState *exec, const KJS::Identifier &p ) const { if ( !isAllowed( exec->interpreter() ) ) { kdWarning() << "JS get request from unknown interpreter, ignoring" << endl; return KJS::Null(); } if ( !policy->isPropertyAllowed( this, obj, p.ascii() ) ) return ObjectImp::get( exec, p ); if ( !obj ) { kdDebug( 80001 ) << "JS getting '" << p.ustring().qstring() << "' but qobj has died" << endl; return ObjectImp::get( exec, p ); } kdDebug( 80001 ) << "JS getting '" << p.ascii() << endl; // Properties QString prop = p.ustring().qstring(); QMetaObject *meta = obj->metaObject(); if ( meta->findProperty( p.ascii(), true ) != -1 ) { QVariant val = obj->property( prop.ascii() ); kdDebug( 80001 ) << "JS getting '" << p.ascii() << "' ( " << val.typeName() << ")" << endl; return convertToValue( exec, val ); } return ObjectImp::get ( exec, p ); }
KJS::List KJSEmbedPart::constructorList() const { KJS::List items; KJS::Object obj = js->globalObject(); KJS::ExecState *exec = js->globalExec(); KJS::ReferenceList l = obj.propList( exec ); KJS::ReferenceListIterator propIt = l.begin(); while ( propIt != l.end() ) { KJS::Identifier name = propIt->getPropertyName( exec ); if ( obj.hasProperty( exec, name ) ) { KJS::Value v = obj.get( exec, name ); KJS::Object vobj = v.toObject( exec ); if ( vobj.implementsConstruct() ) items.append( KJS::String( name.ustring() ) ); } propIt++; } return items; }
PassRefPtr<StringImpl> AtomicString::add(const KJS::Identifier& identifier) { if (identifier.isNull()) return 0; UString::Rep* string = identifier.ustring().rep(); unsigned length = string->size(); if (!length) return StringImpl::empty(); HashAndCharacters buffer = { string->computedHash(), string->data(), length }; pair<HashSet<StringImpl*>::iterator, bool> addResult = stringTable->add<HashAndCharacters, HashAndCharactersTranslator>(buffer); if (!addResult.second) return *addResult.first; return adoptRef(*addResult.first); }