#include <algorithm>
#include "unicode/utypes.h"
#include "unicode/unistr.h"
#include "unicode/uobject.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
#include "uassert.h"
#include "ucln_cmn.h"
#include "uhash.h"
#include "umutex.h"
#include "uresimp.h"
#include "uvector.h"
#include "udataswp.h"
static UHashtable* gLocExtKeyMap = …;
static icu::UInitOnce gLocExtKeyMapInitOnce { … };
SpecialType;
struct LocExtKeyData : public icu::UMemory { … };
struct LocExtType : public icu::UMemory { … };
static icu::MemoryPool<icu::CharString>* gKeyTypeStringPool = …;
static icu::MemoryPool<LocExtKeyData>* gLocExtKeyDataEntries = …;
static icu::MemoryPool<LocExtType>* gLocExtTypeEntries = …;
U_CDECL_BEGIN
static UBool U_CALLCONV
uloc_key_type_cleanup() { … }
U_CDECL_END
namespace {
void U_CALLCONV
initFromResourceBundle(UErrorCode& sts) { … }
bool
init() { … }
bool
isSpecialTypeCodepoints(const char* val) { … }
bool
isSpecialTypeReorderCode(const char* val) { … }
bool
isSpecialTypeRgKeyValue(const char* val) { … }
}
U_EXPORT const char*
ulocimp_toBcpKey(const char* key) { … }
U_EXPORT const char*
ulocimp_toLegacyKey(const char* key) { … }
U_EXPORT const char*
ulocimp_toBcpType(const char* key, const char* type, bool* isKnownKey, bool* isSpecialType) { … }
U_EXPORT const char*
ulocimp_toLegacyType(const char* key, const char* type, bool* isKnownKey, bool* isSpecialType) { … }