Exemplo n.º 1
0
/*
Function:
GetCalendars

Returns the list of CalendarIds that are available for the specified locale.
*/
int32_t GlobalizationNative_GetCalendars(
    const UChar* localeName, CalendarId* calendars, int32_t calendarsCapacity)
{
    UErrorCode err = U_ZERO_ERROR;
    char locale[ULOC_FULLNAME_CAPACITY];
    GetLocale(localeName, locale, ULOC_FULLNAME_CAPACITY, FALSE, &err);
    UEnumeration* pEnum = ucal_getKeywordValuesForLocale("calendar", locale, TRUE, &err);
    int stringEnumeratorCount = uenum_count(pEnum, &err);
    int calendarsReturned = 0;
    for (int i = 0; i < stringEnumeratorCount && calendarsReturned < calendarsCapacity; i++)
    {
        int32_t calendarNameLength = 0;
        const char* calendarName = uenum_next(pEnum, &calendarNameLength, &err);
        if (U_SUCCESS(err))
        {
            CalendarId calendarId = GetCalendarId(calendarName);
            if (calendarId != UNINITIALIZED_VALUE)
            {
                calendars[calendarsReturned] = calendarId;
                calendarsReturned++;
            }
        }
    }
    uenum_close(pEnum);
    return calendarsReturned;
}
Exemplo n.º 2
0
/*
Function:
GetCalendars

Returns the list of CalendarIds that are available for the specified locale.
*/
extern "C" int32_t GetCalendars(const UChar* localeName, CalendarId* calendars, int32_t calendarsCapacity)
{
	Locale locale = GetLocale(localeName);
	if (locale.isBogus())
		return 0;

	UErrorCode err = U_ZERO_ERROR;
	LocalPointer<StringEnumeration> stringEnumerator(Calendar::getKeywordValuesForLocale("calendar", locale, TRUE, err));

	if (stringEnumerator.isNull() || U_FAILURE(err))
		return 0;

	int stringEnumeratorCount = stringEnumerator->count(err);
	if (U_FAILURE(err))
		return 0;

	int calendarsReturned = 0;
	for (int i = 0; i < stringEnumeratorCount && calendarsReturned < calendarsCapacity; i++)
	{
		int32_t calendarNameLength = 0;
		const char* calendarName = stringEnumerator->next(&calendarNameLength, err);
		if (U_SUCCESS(err))
		{
			CalendarId calendarId = GetCalendarId(calendarName);
			if (calendarId != UNINITIALIZED_VALUE)
			{
				calendars[calendarsReturned] = calendarId;
				calendarsReturned++;
			}
		}
	}

	return calendarsReturned;
}