diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /storage/Variant.cpp | |
parent | Initial commit. (diff) | |
download | firefox-upstream/124.0.1.tar.xz firefox-upstream/124.0.1.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'storage/Variant.cpp')
-rw-r--r-- | storage/Variant.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/storage/Variant.cpp b/storage/Variant.cpp new file mode 100644 index 0000000000..61cb5b0676 --- /dev/null +++ b/storage/Variant.cpp @@ -0,0 +1,56 @@ +/* -*- 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/. */ + +#include "Variant.h" + +#include "nsCOMPtr.h" + +extern "C" { + +using namespace mozilla::storage; + +/** + * Return the data type of the given variant. This method used to be exposed + * to XPCOM, but since bug 1507540 it's marked [notxpcom] in the interface + * definition, so we need this C function to access it from Rust. + */ +uint16_t NS_GetDataType(nsIVariant* aVariant) { + return aVariant->GetDataType(); +} + +// Convenience functions to create Storage variants from Rust. +void NS_NewStorageNullVariant(nsIVariant** aVariant) { + nsCOMPtr<nsIVariant> variant = new NullVariant(); + variant.forget(aVariant); +} + +void NS_NewStorageBooleanVariant(bool aValue, nsIVariant** aVariant) { + nsCOMPtr<nsIVariant> variant = new BooleanVariant(aValue); + variant.forget(aVariant); +} + +void NS_NewStorageIntegerVariant(int64_t aValue, nsIVariant** aVariant) { + nsCOMPtr<nsIVariant> variant = new IntegerVariant(aValue); + variant.forget(aVariant); +} + +void NS_NewStorageFloatVariant(double aValue, nsIVariant** aVariant) { + nsCOMPtr<nsIVariant> variant = new FloatVariant(aValue); + variant.forget(aVariant); +} + +void NS_NewStorageTextVariant(const nsAString& aValue, nsIVariant** aVariant) { + nsCOMPtr<nsIVariant> variant = new TextVariant(aValue); + variant.forget(aVariant); +} + +void NS_NewStorageUTF8TextVariant(const nsACString& aValue, + nsIVariant** aVariant) { + nsCOMPtr<nsIVariant> variant = new UTF8TextVariant(aValue); + variant.forget(aVariant); +} + +} // extern "C" |