#include "unicode/errorcode.h"
#include "unicode/utypes.h"
#include "unicode/locid.h"
#include "unicode/uloc.h"
#include "unicode/ures.h"
#include "cmemory.h"
#include "cstring.h"
#include "ucln_cmn.h"
#include "uassert.h"
#include "umutex.h"
#include "uresimp.h"
U_NAMESPACE_BEGIN
static icu::Locale* availableLocaleList = …;
static int32_t availableLocaleListCount;
static icu::UInitOnce gInitOnceLocale { … };
U_NAMESPACE_END
U_CDECL_BEGIN
static UBool U_CALLCONV locale_available_cleanup()
{ … }
U_CDECL_END
U_NAMESPACE_BEGIN
void U_CALLCONV locale_available_init() { … }
const Locale* U_EXPORT2
Locale::getAvailableLocales(int32_t& count)
{ … }
U_NAMESPACE_END
U_NAMESPACE_USE
namespace {
const char** gAvailableLocaleNames[2] = …;
int32_t gAvailableLocaleCounts[2] = …;
icu::UInitOnce ginstalledLocalesInitOnce { … };
class AvailableLocalesSink : public ResourceSink { … };
class AvailableLocalesStringEnumeration : public StringEnumeration { … };
static UBool U_CALLCONV uloc_cleanup() { … }
static void U_CALLCONV loadInstalledLocales(UErrorCode& status) { … }
void _load_installedLocales(UErrorCode& status) { … }
}
U_CAPI const char* U_EXPORT2
uloc_getAvailable(int32_t offset) { … }
U_CAPI int32_t U_EXPORT2
uloc_countAvailable() { … }
U_CAPI UEnumeration* U_EXPORT2
uloc_openAvailableByType(ULocAvailableType type, UErrorCode* status) { … }