#include <optional>
#include <string_view>
#include <utility>
#include "unicode/bytestream.h"
#include "unicode/locid.h"
#include "unicode/localebuilder.h"
#include "unicode/strenum.h"
#include "unicode/stringpiece.h"
#include "unicode/uloc.h"
#include "unicode/ures.h"
#include "bytesinkutil.h"
#include "charstr.h"
#include "charstrmap.h"
#include "cmemory.h"
#include "cstring.h"
#include "mutex.h"
#include "putilimp.h"
#include "uassert.h"
#include "ucln_cmn.h"
#include "uhash.h"
#include "ulocimp.h"
#include "umutex.h"
#include "uniquecharstr.h"
#include "ustr_imp.h"
#include "uvector.h"
U_NAMESPACE_BEGIN
static Locale *gLocaleCache = …;
static UInitOnce gLocaleCacheInitOnce { … };
static UMutex gDefaultLocaleMutex;
static UHashtable *gDefaultLocalesHashT = …;
static Locale *gDefaultLocale = …;
#define ULOC_STRING_LIMIT …
U_NAMESPACE_END
ELocalePos;
namespace {
void U_CALLCONV
deleteLocale(void *obj) { … }
UBool U_CALLCONV locale_cleanup()
{ … }
void U_CALLCONV locale_init(UErrorCode &status) { … }
}
U_NAMESPACE_BEGIN
Locale *locale_set_default_internal(const char *id, UErrorCode& status) { … }
U_NAMESPACE_END
U_CFUNC void
locale_set_default(const char *id)
{ … }
U_CFUNC const char *
locale_get_default()
{ … }
U_NAMESPACE_BEGIN
U_EXPORT const char* const*
ulocimp_getKnownCanonicalizedLocaleForTest(int32_t& length)
{ … }
U_EXPORT bool
ulocimp_isCanonicalizedLocaleForTest(const char* localeName)
{ … }
U_NAMESPACE_BEGIN
Locale& Locale::init(const char* localeID, UBool canonicalize)
{ … }
void
Locale::initBaseName(UErrorCode &status) { … }
int32_t
Locale::hashCode() const
{ … }
void
Locale::setToBogus() { … }
const Locale& U_EXPORT2
Locale::getDefault()
{ … }
void U_EXPORT2
Locale::setDefault( const Locale& newLocale,
UErrorCode& status)
{ … }
void
Locale::addLikelySubtags(UErrorCode& status) { … }
void
Locale::minimizeSubtags(UErrorCode& status) { … }
void
Locale::minimizeSubtags(bool favorScript, UErrorCode& status) { … }
void
Locale::canonicalize(UErrorCode& status) { … }
Locale U_EXPORT2
Locale::forLanguageTag(StringPiece tag, UErrorCode& status)
{ … }
void
Locale::toLanguageTag(ByteSink& sink, UErrorCode& status) const
{ … }
Locale U_EXPORT2
Locale::createFromName (const char *name)
{ … }
Locale U_EXPORT2
Locale::createCanonical(const char* name) { … }
const char *
Locale::getISO3Language() const
{ … }
const char *
Locale::getISO3Country() const
{ … }
uint32_t
Locale::getLCID() const
{ … }
const char* const* U_EXPORT2 Locale::getISOCountries()
{ … }
const char* const* U_EXPORT2 Locale::getISOLanguages()
{ … }
void Locale::setFromPOSIXID(const char *posixID)
{ … }
const Locale & U_EXPORT2
Locale::getRoot()
{ … }
const Locale & U_EXPORT2
Locale::getEnglish()
{ … }
const Locale & U_EXPORT2
Locale::getFrench()
{ … }
const Locale & U_EXPORT2
Locale::getGerman()
{ … }
const Locale & U_EXPORT2
Locale::getItalian()
{ … }
const Locale & U_EXPORT2
Locale::getJapanese()
{ … }
const Locale & U_EXPORT2
Locale::getKorean()
{ … }
const Locale & U_EXPORT2
Locale::getChinese()
{ … }
const Locale & U_EXPORT2
Locale::getSimplifiedChinese()
{ … }
const Locale & U_EXPORT2
Locale::getTraditionalChinese()
{ … }
const Locale & U_EXPORT2
Locale::getFrance()
{ … }
const Locale & U_EXPORT2
Locale::getGermany()
{ … }
const Locale & U_EXPORT2
Locale::getItaly()
{ … }
const Locale & U_EXPORT2
Locale::getJapan()
{ … }
const Locale & U_EXPORT2
Locale::getKorea()
{ … }
const Locale & U_EXPORT2
Locale::getChina()
{ … }
const Locale & U_EXPORT2
Locale::getPRC()
{ … }
const Locale & U_EXPORT2
Locale::getTaiwan()
{ … }
const Locale & U_EXPORT2
Locale::getUK()
{ … }
const Locale & U_EXPORT2
Locale::getUS()
{ … }
const Locale & U_EXPORT2
Locale::getCanada()
{ … }
const Locale & U_EXPORT2
Locale::getCanadaFrench()
{ … }
const Locale &
Locale::getLocale(int locid)
{ … }
Locale *
Locale::getLocaleCache()
{ … }
class KeywordEnumeration : public StringEnumeration { … };
const char KeywordEnumeration::fgClassID = …;
KeywordEnumeration::~KeywordEnumeration() = default;
class UnicodeKeywordEnumeration : public KeywordEnumeration { … };
UnicodeKeywordEnumeration::~UnicodeKeywordEnumeration() = default;
StringEnumeration *
Locale::createKeywords(UErrorCode &status) const
{ … }
StringEnumeration *
Locale::createUnicodeKeywords(UErrorCode &status) const
{ … }
int32_t
Locale::getKeywordValue(const char* keywordName, char *buffer, int32_t bufLen, UErrorCode &status) const
{ … }
void
Locale::getKeywordValue(StringPiece keywordName, ByteSink& sink, UErrorCode& status) const { … }
void
Locale::getUnicodeKeywordValue(StringPiece keywordName,
ByteSink& sink,
UErrorCode& status) const { … }
void
Locale::setKeywordValue(StringPiece keywordName,
StringPiece keywordValue,
UErrorCode& status) { … }
void
Locale::setUnicodeKeywordValue(StringPiece keywordName,
StringPiece keywordValue,
UErrorCode& status) { … }
const char *
Locale::getBaseName() const { … }
Locale::Iterator::~Iterator() = default;
U_NAMESPACE_END