ICU-20918 ucal_openTimeZones() to call ucal_openTimeZoneIDEnumeration()
See #1630
diff --git a/icu4c/source/i18n/ucal.cpp b/icu4c/source/i18n/ucal.cpp
index 099e9e3..33f7258 100644
--- a/icu4c/source/i18n/ucal.cpp
+++ b/icu4c/source/i18n/ucal.cpp
@@ -33,8 +33,8 @@
static TimeZone*
_createTimeZone(const UChar* zoneID, int32_t len, UErrorCode* ec) {
- TimeZone* zone = NULL;
- if (ec != NULL && U_SUCCESS(*ec)) {
+ TimeZone* zone = nullptr;
+ if (ec != nullptr && U_SUCCESS(*ec)) {
// Note that if zoneID is invalid, we get back GMT. This odd
// behavior is by design and goes back to the JDK. The only
// failure we will see is a memory allocation failure.
@@ -42,7 +42,7 @@
UnicodeString zoneStrID;
zoneStrID.setTo((UBool)(len < 0), zoneID, l); /* temporary read-only alias */
zone = TimeZone::createTimeZone(zoneStrID);
- if (zone == NULL) {
+ if (zone == nullptr) {
*ec = U_MEMORY_ALLOCATION_ERROR;
}
}
@@ -58,20 +58,20 @@
U_CAPI UEnumeration* U_EXPORT2
ucal_openTimeZones(UErrorCode* ec) {
- return uenum_openFromStringEnumeration(TimeZone::createEnumeration(), ec);
+ return ucal_openTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, nullptr, nullptr, ec);
}
U_CAPI UEnumeration* U_EXPORT2
ucal_openCountryTimeZones(const char* country, UErrorCode* ec) {
- return uenum_openFromStringEnumeration(TimeZone::createEnumeration(country), ec);
+ return ucal_openTimeZoneIDEnumeration(UCAL_ZONE_TYPE_ANY, country, nullptr, ec);
}
U_CAPI int32_t U_EXPORT2
ucal_getDefaultTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) {
int32_t len = 0;
- if (ec != NULL && U_SUCCESS(*ec)) {
+ if (ec != nullptr && U_SUCCESS(*ec)) {
TimeZone* zone = TimeZone::createDefault();
- if (zone == NULL) {
+ if (zone == nullptr) {
*ec = U_MEMORY_ALLOCATION_ERROR;
} else {
UnicodeString id;
@@ -86,7 +86,7 @@
U_CAPI void U_EXPORT2
ucal_setDefaultTimeZone(const UChar* zoneID, UErrorCode* ec) {
TimeZone* zone = _createTimeZone(zoneID, -1, ec);
- if (zone != NULL) {
+ if (zone != nullptr) {
TimeZone::adoptDefault(zone);
}
}
@@ -94,9 +94,9 @@
U_CAPI int32_t U_EXPORT2
ucal_getHostTimeZone(UChar* result, int32_t resultCapacity, UErrorCode* ec) {
int32_t len = 0;
- if (ec != NULL && U_SUCCESS(*ec)) {
+ if (ec != nullptr && U_SUCCESS(*ec)) {
TimeZone *zone = TimeZone::detectHostTimeZone();
- if (zone == NULL) {
+ if (zone == nullptr) {
*ec = U_MEMORY_ALLOCATION_ERROR;
} else {
UnicodeString id;
@@ -114,7 +114,7 @@
TimeZone* zone = _createTimeZone(zoneID, -1, ec);
if (U_SUCCESS(*ec)) {
SimpleTimeZone* stz = dynamic_cast<SimpleTimeZone*>(zone);
- if (stz != NULL) {
+ if (stz != nullptr) {
result = stz->getDSTSavings();
} else {
// Since there is no getDSTSavings on TimeZone, we use a
@@ -219,10 +219,10 @@
if(U_FAILURE(*status))
return;
- TimeZone* zone = (zoneID==NULL) ? TimeZone::createDefault()
+ TimeZone* zone = (zoneID==nullptr) ? TimeZone::createDefault()
: _createTimeZone(zoneID, len, status);
- if (zone != NULL) {
+ if (zone != nullptr) {
((Calendar*)cal)->adoptTimeZone(zone);
}
}
@@ -255,8 +255,8 @@
const TimeZone& tz = ((Calendar*)cal)->getTimeZone();
UnicodeString id;
- if(!(result==NULL && resultLength==0)) {
- // NULL destination for pure preflighting: empty dummy string
+ if (!(result == nullptr && resultLength == 0)) {
+ // Null destination for pure preflighting: empty dummy string
// otherwise, alias the destination buffer
id.setTo(result, 0, resultLength);
}
@@ -298,12 +298,12 @@
}
Calendar *cpp_cal = (Calendar *)cal;
GregorianCalendar *gregocal = dynamic_cast<GregorianCalendar *>(cpp_cal);
- // Not if(gregocal == NULL) {
+ // Not if(gregocal == nullptr) {
// because we really want to work only with a GregorianCalendar, not with
// its subclasses like BuddhistCalendar.
- if (cpp_cal == NULL) {
- // We normally don't check "this" pointers for NULL, but this here avoids
- // compiler-generated exception-throwing code in case cal == NULL.
+ if (cpp_cal == nullptr) {
+ // We normally don't check "this" pointers for nullptr, but this here avoids
+ // compiler-generated exception-throwing code in case cal == nullptr.
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return;
}
@@ -321,11 +321,11 @@
}
const Calendar *cpp_cal = (const Calendar *)cal;
const GregorianCalendar *gregocal = dynamic_cast<const GregorianCalendar *>(cpp_cal);
- // Not if(gregocal == NULL) {
+ // Not if(gregocal == nullptr) {
// see comments in ucal_setGregorianChange().
- if (cpp_cal == NULL) {
- // We normally don't check "this" pointers for NULL, but this here avoids
- // compiler-generated exception-throwing code in case cal == NULL.
+ if (cpp_cal == nullptr) {
+ // We normally don't check "this" pointers for nullptr, but this here avoids
+ // compiler-generated exception-throwing code in case cal == nullptr.
*pErrorCode = U_ILLEGAL_ARGUMENT_ERROR;
return (UDate)0;
}
@@ -572,11 +572,11 @@
U_CAPI const char * U_EXPORT2
ucal_getLocaleByType(const UCalendar *cal, ULocDataLocaleType type, UErrorCode* status)
{
- if (cal == NULL) {
+ if (cal == nullptr) {
if (U_SUCCESS(*status)) {
*status = U_ILLEGAL_ARGUMENT_ERROR;
}
- return NULL;
+ return nullptr;
}
return ((Calendar*)cal)->getLocaleID(type, *status);
}
@@ -617,7 +617,7 @@
ucal_getType(const UCalendar *cal, UErrorCode* status)
{
if (U_FAILURE(*status)) {
- return NULL;
+ return nullptr;
}
return ((Calendar*)cal)->getType();
}
@@ -662,8 +662,8 @@
static const UEnumeration defaultKeywordValues = {
- NULL,
- NULL,
+ nullptr,
+ nullptr,
ulist_close_keyword_values_iterator,
ulist_count_keyword_values,
uenum_unextDefault,
@@ -690,7 +690,7 @@
"islamic-umalqura",
"islamic-tbla",
"islamic-rgsa",
- NULL
+ nullptr
};
U_CAPI UEnumeration* U_EXPORT2
@@ -700,16 +700,16 @@
(void)ulocimp_getRegionForSupplementalData(locale, TRUE, prefRegion, sizeof(prefRegion), status);
// Read preferred calendar values from supplementalData calendarPreference
- UResourceBundle *rb = ures_openDirect(NULL, "supplementalData", status);
+ UResourceBundle *rb = ures_openDirect(nullptr, "supplementalData", status);
ures_getByKey(rb, "calendarPreferenceData", rb, status);
- UResourceBundle *order = ures_getByKey(rb, prefRegion, NULL, status);
- if (*status == U_MISSING_RESOURCE_ERROR && rb != NULL) {
+ UResourceBundle *order = ures_getByKey(rb, prefRegion, nullptr, status);
+ if (*status == U_MISSING_RESOURCE_ERROR && rb != nullptr) {
*status = U_ZERO_ERROR;
- order = ures_getByKey(rb, "001", NULL, status);
+ order = ures_getByKey(rb, "001", nullptr, status);
}
// Create a list of calendar type strings
- UList *values = NULL;
+ UList *values = nullptr;
if (U_SUCCESS(*status)) {
values = ulist_createEmptyList(status);
if (U_SUCCESS(*status)) {
@@ -717,7 +717,7 @@
int32_t len;
const UChar *type = ures_getStringByIndex(order, i, &len, status);
char *caltype = (char*)uprv_malloc(len + 1);
- if (caltype == NULL) {
+ if (caltype == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
break;
}
@@ -732,7 +732,7 @@
if (U_SUCCESS(*status) && !commonlyUsed) {
// If not commonlyUsed, add other available values
- for (int32_t i = 0; CAL_TYPES[i] != NULL; i++) {
+ 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);
if (U_FAILURE(*status)) {
@@ -743,7 +743,7 @@
}
if (U_FAILURE(*status)) {
ulist_deleteList(values);
- values = NULL;
+ values = nullptr;
}
}
}
@@ -751,16 +751,16 @@
ures_close(order);
ures_close(rb);
- if (U_FAILURE(*status) || values == NULL) {
- return NULL;
+ if (U_FAILURE(*status) || values == nullptr) {
+ return nullptr;
}
// Create string enumeration
UEnumeration *en = (UEnumeration*)uprv_malloc(sizeof(UEnumeration));
- if (en == NULL) {
+ if (en == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
ulist_deleteList(values);
- return NULL;
+ return nullptr;
}
ulist_resetList(values);
memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));
@@ -778,7 +778,7 @@
UDate base = ((Calendar*)cal)->getTime(*status);
const TimeZone& tz = ((Calendar*)cal)->getTimeZone();
const BasicTimeZone * btz = dynamic_cast<const BasicTimeZone *>(&tz);
- if (btz != NULL && U_SUCCESS(*status)) {
+ if (btz != nullptr && U_SUCCESS(*status)) {
TimeZoneTransition tzt;
UBool inclusive = (type == UCAL_TZ_TRANSITION_NEXT_INCLUSIVE || type == UCAL_TZ_TRANSITION_PREVIOUS_INCLUSIVE);
UBool result = (type == UCAL_TZ_TRANSITION_NEXT || type == UCAL_TZ_TRANSITION_NEXT_INCLUSIVE)?