diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /intl/components/src/NumberingSystem.h | |
parent | Initial commit. (diff) | |
download | thunderbird-upstream.tar.xz thunderbird-upstream.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'intl/components/src/NumberingSystem.h')
-rw-r--r-- | intl/components/src/NumberingSystem.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/intl/components/src/NumberingSystem.h b/intl/components/src/NumberingSystem.h new file mode 100644 index 0000000000..a3d1903dd1 --- /dev/null +++ b/intl/components/src/NumberingSystem.h @@ -0,0 +1,56 @@ +/* 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/. */ + +#ifndef intl_components_NumberingSystem_h_ +#define intl_components_NumberingSystem_h_ + +#include "mozilla/intl/ICUError.h" +#include "mozilla/Result.h" +#include "mozilla/Span.h" +#include "mozilla/UniquePtr.h" + +struct UNumberingSystem; + +namespace mozilla::intl { + +/** + * This component is a Mozilla-focused API for working with numbering systems in + * internationalization code. It is used in coordination with other operations + * such as number formatting. + */ +class NumberingSystem final { + public: + explicit NumberingSystem(UNumberingSystem* aNumberingSystem) + : mNumberingSystem(aNumberingSystem) { + MOZ_ASSERT(aNumberingSystem); + }; + + // Do not allow copy as this class owns the ICU resource. Move is not + // currently implemented, but a custom move operator could be created if + // needed. + NumberingSystem(const NumberingSystem&) = delete; + NumberingSystem& operator=(const NumberingSystem&) = delete; + + ~NumberingSystem(); + + /** + * Create a NumberingSystem. + */ + static Result<UniquePtr<NumberingSystem>, ICUError> TryCreate( + const char* aLocale); + + /** + * Returns the name of this numbering system. + * + * The returned string has the same lifetime as this NumberingSystem object. + */ + Result<Span<const char>, ICUError> GetName(); + + private: + UNumberingSystem* mNumberingSystem = nullptr; +}; + +} // namespace mozilla::intl + +#endif |