diff options
author | romankoshelev <romankoshelev@yandex-team.com> | 2023-08-14 19:51:50 +0300 |
---|---|---|
committer | romankoshelev <romankoshelev@yandex-team.com> | 2023-08-15 01:24:11 +0300 |
commit | cfcd865e05c0d0525ea27d1e153a043b32a85138 (patch) | |
tree | 68d3b3b25271e8a4998505897a269ff7ce119b76 /contrib/libs/icu/i18n/ucal.cpp | |
parent | ccb790c507bd5e8ffe2ef9886ce5ee0a7ce22a15 (diff) | |
download | ydb-cfcd865e05c0d0525ea27d1e153a043b32a85138.tar.gz |
Update ICU to 73.2
Diffstat (limited to 'contrib/libs/icu/i18n/ucal.cpp')
-rw-r--r-- | contrib/libs/icu/i18n/ucal.cpp | 110 |
1 files changed, 61 insertions, 49 deletions
diff --git a/contrib/libs/icu/i18n/ucal.cpp b/contrib/libs/icu/i18n/ucal.cpp index 33f72589c5..18d9cf4ec7 100644 --- a/contrib/libs/icu/i18n/ucal.cpp +++ b/contrib/libs/icu/i18n/ucal.cpp @@ -32,7 +32,7 @@ U_NAMESPACE_USE static TimeZone* -_createTimeZone(const UChar* zoneID, int32_t len, UErrorCode* ec) { +_createTimeZone(const char16_t* zoneID, int32_t len, UErrorCode* ec) { TimeZone* zone = nullptr; if (ec != nullptr && U_SUCCESS(*ec)) { // Note that if zoneID is invalid, we get back GMT. This odd @@ -67,7 +67,7 @@ ucal_openCountryTimeZones(const char* country, UErrorCode* ec) { } U_CAPI int32_t U_EXPORT2 -ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) { +ucal_getDefaultTimeZone(char16_t* result, int32_t resultCapacity, UErrorCode* ec) { int32_t len = 0; if (ec != nullptr && U_SUCCESS(*ec)) { TimeZone* zone = TimeZone::createDefault(); @@ -84,7 +84,7 @@ ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) { } U_CAPI void U_EXPORT2 -ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec) { +ucal_setDefaultTimeZone(const char16_t* zoneID, UErrorCode* ec) { TimeZone* zone = _createTimeZone(zoneID, -1, ec); if (zone != nullptr) { TimeZone::adoptDefault(zone); @@ -92,7 +92,7 @@ ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec) { } U_CAPI int32_t U_EXPORT2 -ucal_getHostTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) { +ucal_getHostTimeZone(char16_t* result, int32_t resultCapacity, UErrorCode* ec) { int32_t len = 0; if (ec != nullptr && U_SUCCESS(*ec)) { TimeZone *zone = TimeZone::detectHostTimeZone(); @@ -109,7 +109,7 @@ ucal_getHostTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) { } U_CAPI int32_t U_EXPORT2 -ucal_getDSTSavings(const UChar* zoneID, UErrorCode* ec) { +ucal_getDSTSavings(const char16_t* zoneID, UErrorCode* ec) { int32_t result = 0; TimeZone* zone = _createTimeZone(zoneID, -1, ec); if (U_SUCCESS(*ec)) { @@ -124,7 +124,7 @@ ucal_getDSTSavings(const UChar* zoneID, UErrorCode* ec) { UDate d = Calendar::getNow(); for (int32_t i=0; i<53; ++i, d+=U_MILLIS_PER_DAY*7.0) { int32_t raw, dst; - zone->getOffset(d, FALSE, raw, dst, *ec); + zone->getOffset(d, false, raw, dst, *ec); if (U_FAILURE(*ec)) { break; } else if (dst != 0) { @@ -148,7 +148,7 @@ ucal_getNow() #define ULOC_LOCALE_IDENTIFIER_CAPACITY (ULOC_FULLNAME_CAPACITY + 1 + ULOC_KEYWORD_AND_VALUES_CAPACITY) U_CAPI UCalendar* U_EXPORT2 -ucal_open( const UChar* zoneID, +ucal_open( const char16_t* zoneID, int32_t len, const char* locale, UCalendarType caltype, @@ -211,7 +211,7 @@ ucal_clone(const UCalendar* cal, U_CAPI void U_EXPORT2 ucal_setTimeZone( UCalendar* cal, - const UChar* zoneID, + const char16_t* zoneID, int32_t len, UErrorCode *status) { @@ -229,7 +229,7 @@ ucal_setTimeZone( UCalendar* cal, U_CAPI int32_t U_EXPORT2 ucal_getTimeZoneID(const UCalendar *cal, - UChar *result, + char16_t *result, int32_t resultLength, UErrorCode *status) { @@ -246,7 +246,7 @@ U_CAPI int32_t U_EXPORT2 ucal_getTimeZoneDisplayName(const UCalendar* cal, UCalendarDisplayNameType type, const char *locale, - UChar* result, + char16_t* result, int32_t resultLength, UErrorCode* status) { @@ -263,19 +263,19 @@ ucal_getTimeZoneDisplayName(const UCalendar* cal, switch(type) { case UCAL_STANDARD: - tz.getDisplayName(FALSE, TimeZone::LONG, Locale(locale), id); + tz.getDisplayName(false, TimeZone::LONG, Locale(locale), id); break; case UCAL_SHORT_STANDARD: - tz.getDisplayName(FALSE, TimeZone::SHORT, Locale(locale), id); + tz.getDisplayName(false, TimeZone::SHORT, Locale(locale), id); break; case UCAL_DST: - tz.getDisplayName(TRUE, TimeZone::LONG, Locale(locale), id); + tz.getDisplayName(true, TimeZone::LONG, Locale(locale), id); break; case UCAL_SHORT_DST: - tz.getDisplayName(TRUE, TimeZone::SHORT, Locale(locale), id); + tz.getDisplayName(true, TimeZone::SHORT, Locale(locale), id); break; } @@ -338,9 +338,7 @@ ucal_getGregorianChange(const UCalendar *cal, UErrorCode *pErrorCode) { U_CAPI int32_t U_EXPORT2 ucal_getAttribute( const UCalendar* cal, - UCalendarAttribute attr) -{ - + UCalendarAttribute attr) UPRV_NO_SANITIZE_UNDEFINED { switch(attr) { case UCAL_LENIENT: return ((Calendar*)cal)->isLenient(); @@ -468,10 +466,12 @@ U_CAPI void U_EXPORT2 ucal_add( UCalendar* cal, UCalendarDateFields field, int32_t amount, - UErrorCode* status) -{ - + UErrorCode* status) UPRV_NO_SANITIZE_UNDEFINED { if(U_FAILURE(*status)) return; + if (field < 0 || UCAL_FIELD_COUNT <= field) { + *status = U_ILLEGAL_ARGUMENT_ERROR; + return; + } ((Calendar*)cal)->add(field, amount, *status); } @@ -480,10 +480,12 @@ U_CAPI void U_EXPORT2 ucal_roll( UCalendar* cal, UCalendarDateFields field, int32_t amount, - UErrorCode* status) -{ - + UErrorCode* status) UPRV_NO_SANITIZE_UNDEFINED { if(U_FAILURE(*status)) return; + if (field < 0 || UCAL_FIELD_COUNT <= field) { + *status = U_ILLEGAL_ARGUMENT_ERROR; + return; + } ((Calendar*)cal)->roll(field, amount, *status); } @@ -491,10 +493,12 @@ ucal_roll( UCalendar* cal, U_CAPI int32_t U_EXPORT2 ucal_get( const UCalendar* cal, UCalendarDateFields field, - UErrorCode* status ) -{ - + UErrorCode* status ) UPRV_NO_SANITIZE_UNDEFINED { if(U_FAILURE(*status)) return -1; + if (field < 0 || UCAL_FIELD_COUNT <= field) { + *status = U_ILLEGAL_ARGUMENT_ERROR; + return -1; + } return ((Calendar*)cal)->get(field, *status); } @@ -502,24 +506,30 @@ ucal_get( const UCalendar* cal, U_CAPI void U_EXPORT2 ucal_set( UCalendar* cal, UCalendarDateFields field, - int32_t value) -{ + int32_t value) UPRV_NO_SANITIZE_UNDEFINED { + if (field < 0 || UCAL_FIELD_COUNT <= field) { + return; + } ((Calendar*)cal)->set(field, value); } U_CAPI UBool U_EXPORT2 ucal_isSet( const UCalendar* cal, - UCalendarDateFields field) -{ + UCalendarDateFields field) UPRV_NO_SANITIZE_UNDEFINED { + if (field < 0 || UCAL_FIELD_COUNT <= field) { + return false; + } return ((Calendar*)cal)->isSet(field); } U_CAPI void U_EXPORT2 ucal_clearField( UCalendar* cal, - UCalendarDateFields field) -{ + UCalendarDateFields field) UPRV_NO_SANITIZE_UNDEFINED { + if (field < 0 || UCAL_FIELD_COUNT <= field) { + return; + } ((Calendar*)cal)->clear(field); } @@ -535,12 +545,14 @@ U_CAPI int32_t U_EXPORT2 ucal_getLimit( const UCalendar* cal, UCalendarDateFields field, UCalendarLimitType type, - UErrorCode *status) -{ - + UErrorCode *status) UPRV_NO_SANITIZE_UNDEFINED { if(status==0 || U_FAILURE(*status)) { return -1; } + if (field < 0 || UCAL_FIELD_COUNT <= field) { + *status = U_ILLEGAL_ARGUMENT_ERROR; + return -1; + } switch(type) { case UCAL_MINIMUM: @@ -588,13 +600,13 @@ ucal_getTZDataVersion(UErrorCode* status) } U_CAPI int32_t U_EXPORT2 -ucal_getCanonicalTimeZoneID(const UChar* id, int32_t len, - UChar* result, int32_t resultCapacity, UBool *isSystemID, UErrorCode* status) { +ucal_getCanonicalTimeZoneID(const char16_t* id, int32_t len, + char16_t* result, int32_t resultCapacity, UBool *isSystemID, UErrorCode* status) { if(status == 0 || U_FAILURE(*status)) { return 0; } if (isSystemID) { - *isSystemID = FALSE; + *isSystemID = false; } if (id == 0 || len == 0 || result == 0 || resultCapacity <= 0) { *status = U_ILLEGAL_ARGUMENT_ERROR; @@ -602,7 +614,7 @@ ucal_getCanonicalTimeZoneID(const UChar* id, int32_t len, } int32_t reslen = 0; UnicodeString canonical; - UBool systemID = FALSE; + UBool systemID = false; TimeZone::getCanonicalID(UnicodeString(id, len), canonical, systemID, *status); if (U_SUCCESS(*status)) { if (isSystemID) { @@ -644,7 +656,7 @@ U_CAPI UBool U_EXPORT2 ucal_isWeekend(const UCalendar *cal, UDate date, UErrorCode *status) { if (U_FAILURE(*status)) { - return FALSE; + return false; } return ((Calendar*)cal)->isWeekend(date, *status); } @@ -697,7 +709,7 @@ U_CAPI UEnumeration* U_EXPORT2 ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool commonlyUsed, UErrorCode *status) { // Resolve region char prefRegion[ULOC_COUNTRY_CAPACITY]; - (void)ulocimp_getRegionForSupplementalData(locale, TRUE, prefRegion, sizeof(prefRegion), status); + (void)ulocimp_getRegionForSupplementalData(locale, true, prefRegion, sizeof(prefRegion), status); // Read preferred calendar values from supplementalData calendarPreference UResourceBundle *rb = ures_openDirect(nullptr, "supplementalData", status); @@ -715,7 +727,7 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool if (U_SUCCESS(*status)) { for (int i = 0; i < ures_getSize(order); i++) { int32_t len; - const UChar *type = ures_getStringByIndex(order, i, &len, status); + const char16_t *type = ures_getStringByIndex(order, i, &len, status); char *caltype = (char*)uprv_malloc(len + 1); if (caltype == nullptr) { *status = U_MEMORY_ALLOCATION_ERROR; @@ -724,7 +736,7 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool u_UCharsToChars(type, caltype, len); *(caltype + len) = 0; - ulist_addItemEndList(values, caltype, TRUE, status); + ulist_addItemEndList(values, caltype, true, status); if (U_FAILURE(*status)) { break; } @@ -734,7 +746,7 @@ ucal_getKeywordValuesForLocale(const char * /* key */, const char* locale, UBool // If not commonlyUsed, add other available values for (int32_t i = 0; CAL_TYPES[i] != nullptr; i++) { if (!ulist_containsString(values, CAL_TYPES[i], (int32_t)uprv_strlen(CAL_TYPES[i]))) { - ulist_addItemEndList(values, CAL_TYPES[i], FALSE, status); + ulist_addItemEndList(values, CAL_TYPES[i], false, status); if (U_FAILURE(*status)) { break; } @@ -773,7 +785,7 @@ ucal_getTimeZoneTransitionDate(const UCalendar* cal, UTimeZoneTransitionType typ UDate* transition, UErrorCode* status) { if (U_FAILURE(*status)) { - return FALSE; + return false; } UDate base = ((Calendar*)cal)->getTime(*status); const TimeZone& tz = ((Calendar*)cal)->getTimeZone(); @@ -786,14 +798,14 @@ ucal_getTimeZoneTransitionDate(const UCalendar* cal, UTimeZoneTransitionType typ btz->getPreviousTransition(base, inclusive, tzt); if (result) { *transition = tzt.getTime(); - return TRUE; + return true; } } - return FALSE; + return false; } U_CAPI int32_t U_EXPORT2 -ucal_getWindowsTimeZoneID(const UChar* id, int32_t len, UChar* winid, int32_t winidCapacity, UErrorCode* status) { +ucal_getWindowsTimeZoneID(const char16_t* id, int32_t len, char16_t* winid, int32_t winidCapacity, UErrorCode* status) { if (U_FAILURE(*status)) { return 0; } @@ -811,7 +823,7 @@ ucal_getWindowsTimeZoneID(const UChar* id, int32_t len, UChar* winid, int32_t wi } U_CAPI int32_t U_EXPORT2 -ucal_getTimeZoneIDForWindowsID(const UChar* winid, int32_t len, const char* region, UChar* id, int32_t idCapacity, UErrorCode* status) { +ucal_getTimeZoneIDForWindowsID(const char16_t* winid, int32_t len, const char* region, char16_t* id, int32_t idCapacity, UErrorCode* status) { if (U_FAILURE(*status)) { return 0; } |