JSValue JSHTMLOptionsCollection::add(ExecState* exec) { HTMLOptionsCollection* imp = static_cast<HTMLOptionsCollection*>(impl()); HTMLOptionElement* option = toHTMLOptionElement(exec->argument(0)); ExceptionCode ec = 0; if (exec->argumentCount() < 2) imp->add(option, ec); else { bool ok; int index = finiteInt32Value(exec->argument(1), exec, ok); if (exec->hadException()) return jsUndefined(); if (!ok) ec = TYPE_MISMATCH_ERR; else imp->add(option, index, ec); } setDOMException(exec, ec); return jsUndefined(); }
JSValue JSSQLResultSetRowList::item(ExecState* exec) { bool indexOk; int index = finiteInt32Value(exec->argument(0), exec, indexOk); if (!indexOk) { setDOMException(exec, TYPE_MISMATCH_ERR); return jsUndefined(); } if (index < 0 || (unsigned)index >= m_impl->length()) { setDOMException(exec, INDEX_SIZE_ERR); return jsUndefined(); } JSObject* object = constructEmptyObject(exec); unsigned numColumns = m_impl->columnNames().size(); unsigned valuesIndex = index * numColumns; for (unsigned i = 0; i < numColumns; i++) { const SQLValue& value = m_impl->values()[valuesIndex + i]; JSValue jsValue; switch (value.type()) { case SQLValue::StringValue: jsValue = jsString(exec, value.string()); break; case SQLValue::NullValue: jsValue = jsNull(); break; case SQLValue::NumberValue: jsValue = jsNumber(value.number()); break; default: ASSERT_NOT_REACHED(); } object->putDirect(exec->globalData(), Identifier(exec, stringToUString(m_impl->columnNames()[i])), jsValue, DontDelete | ReadOnly); } return object; }