bool JSConsoleWidget::execute( const QString &cmd, const KJS::Value &self ) { KJS::Completion jsres; bool ok = js->execute( jsres, cmd, self ); // Executed ok if ( ok ) { // No return value if ( !jsres.isValueCompletion() ) return ok; // Return value KJS::Value ret = jsres.value(); KJS::UString s = ret.toString( js->globalExec() ); if ( s.isNull() ) { warn( i18n("Success, but return value cannot be displayed") ); return ok; } QString txt = s.qstring(); txt = txt.replace( QChar('\n'), "<br>" ); println( txt ); return ok; } // Handle errors KJS::ComplType ct = jsres.complType(); if ( (ct == KJS::Throw) || (ct == KJS::Break) || ct == KJS::Continue ) { KJS::UString s = jsres.value().toString( js->globalExec() ); if ( !s.isNull() ) warn( s.qstring() ); else warn( i18n("Unspecified error") ); } else { kdDebug(80001) << "jsconsolewidget: Unknown completion error, " << ct << endl; warn( i18n("Unknown error returned, completion type %1").arg(ct) ); } return ok; }
PassRefPtr<StringImpl> AtomicString::add(const KJS::UString& ustring) { if (ustring.isNull()) return 0; UString::Rep* string = ustring.rep(); unsigned length = string->size(); if (!length) return StringImpl::empty(); HashAndCharacters buffer = { string->hash(), string->data(), length }; pair<HashSet<StringImpl*>::iterator, bool> addResult = stringTable->add<HashAndCharacters, HashAndCharactersTranslator>(buffer); if (!addResult.second) return *addResult.first; return adoptRef(*addResult.first); }