/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ : * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
uint32_t idx;
{
nsresult rv = mStatement->GetColumnIndex(name, &idx); if (NS_FAILED(rv)) { // It's highly likely that the name doesn't exist, so let the JS engine // check the prototype chain and throw if that doesn't have the property // either.
aFound = false; return;
}
}
int32_t type;
aRv = mStatement->GetTypeOfIndex(idx, &type); if (aRv.Failed()) { return;
}
switch (type) { case mozIStorageValueArray::VALUE_TYPE_INTEGER: case mozIStorageValueArray::VALUE_TYPE_FLOAT: { double dval;
aRv = mStatement->GetDouble(idx, &dval); if (aRv.Failed()) { return;
}
aResult.set(::JS_NumberValue(dval)); break;
} case mozIStorageValueArray::VALUE_TYPE_TEXT: {
uint32_t bytes; const char16_t* sval = reinterpret_cast<const char16_t*>( static_cast<mozIStorageStatement*>(mStatement)
->AsSharedWString(idx, &bytes));
JSString* str =
::JS_NewUCStringCopyN(aCx, sval, bytes / sizeof(char16_t)); if (!str) {
aRv.Throw(NS_ERROR_UNEXPECTED); return;
}
aResult.setString(str); break;
} case mozIStorageValueArray::VALUE_TYPE_BLOB: {
uint32_t length; const uint8_t* blob = static_cast<mozIStorageStatement*>(mStatement)
->AsSharedBlob(idx, &length);
JS::Rooted<JSObject*> obj(aCx, JS::NewArrayObject(aCx, length)); if (!obj) {
aRv.Throw(NS_ERROR_UNEXPECTED); return;
}
aResult.setObject(*obj);
// Copy the blob over to the JS array. for (uint32_t i = 0; i < length; i++) { if (!::JS_DefineElement(aCx, obj, i, blob[i], JSPROP_ENUMERATE)) {
aRv.Throw(NS_ERROR_UNEXPECTED); return;
}
} break;
} case mozIStorageValueArray::VALUE_TYPE_NULL:
aResult.setNull(); break; default:
NS_ERROR("unknown column type returned, what's going on?"); break;
}
aFound = true;
}
void StatementRow::GetSupportedNames(nsTArray<nsString>& aNames) { if (!mStatement) { return;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.