DateTimePatternGenerator.cpp (1398B)
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 #include "mozilla/intl/DateTimePatternGenerator.h" 5 6 namespace mozilla::intl { 7 8 DateTimePatternGenerator::~DateTimePatternGenerator() { 9 // The mGenerator will not exist when the DateTimePatternGenerator is being 10 // moved. 11 if (mGenerator) { 12 udatpg_close(mGenerator.GetMut()); 13 } 14 } 15 16 /* static */ 17 Result<UniquePtr<DateTimePatternGenerator>, ICUError> 18 DateTimePatternGenerator::TryCreate(const char* aLocale) { 19 UErrorCode status = U_ZERO_ERROR; 20 UDateTimePatternGenerator* generator = 21 udatpg_open(IcuLocale(aLocale), &status); 22 if (U_FAILURE(status)) { 23 return Err(ToICUError(status)); 24 } 25 return MakeUnique<DateTimePatternGenerator>(generator); 26 }; 27 28 DateTimePatternGenerator::DateTimePatternGenerator( 29 DateTimePatternGenerator&& other) noexcept 30 : mGenerator(other.mGenerator.GetMut()) { 31 other.mGenerator = nullptr; 32 } 33 34 DateTimePatternGenerator& DateTimePatternGenerator::operator=( 35 DateTimePatternGenerator&& other) noexcept { 36 if (this == &other) { 37 return *this; 38 } 39 40 if (mGenerator) { 41 udatpg_close(mGenerator.GetMut()); 42 } 43 mGenerator = other.mGenerator.GetMut(); 44 other.mGenerator = nullptr; 45 46 return *this; 47 } 48 49 } // namespace mozilla::intl