tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

NumberingSystem.cpp (1050B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #include "mozilla/intl/NumberingSystem.h"
      6 #include "mozilla/intl/ICU4CGlue.h"
      7 
      8 #include "unicode/unumsys.h"
      9 #include "unicode/utypes.h"
     10 
     11 namespace mozilla::intl {
     12 
     13 NumberingSystem::~NumberingSystem() {
     14  MOZ_ASSERT(mNumberingSystem);
     15  unumsys_close(mNumberingSystem);
     16 }
     17 
     18 Result<UniquePtr<NumberingSystem>, ICUError> NumberingSystem::TryCreate(
     19    const char* aLocale) {
     20  UErrorCode status = U_ZERO_ERROR;
     21  UNumberingSystem* numbers = unumsys_open(IcuLocale(aLocale), &status);
     22  if (U_FAILURE(status)) {
     23    return Err(ToICUError(status));
     24  }
     25 
     26  return MakeUnique<NumberingSystem>(numbers);
     27 }
     28 
     29 Result<Span<const char>, ICUError> NumberingSystem::GetName() {
     30  const char* name = unumsys_getName(mNumberingSystem);
     31  if (!name) {
     32    return Err(ICUError::InternalError);
     33  }
     34 
     35  return MakeStringSpan(name);
     36 }
     37 
     38 }  // namespace mozilla::intl