#include "unicode/utypes.h"
#if !UCONFIG_NO_COLLATION
#include "unicode/coll.h"
#include "unicode/localpointer.h"
#include "unicode/locid.h"
#include "unicode/tblcoll.h"
#include "unicode/ucol.h"
#include "unicode/uloc.h"
#include "unicode/unistr.h"
#include "unicode/ures.h"
#include "charstr.h"
#include "cmemory.h"
#include "cstring.h"
#include "collationdatareader.h"
#include "collationroot.h"
#include "collationtailoring.h"
#include "resource.h"
#include "putilimp.h"
#include "uassert.h"
#include "ucln_in.h"
#include "ucol_imp.h"
#include "uenumimp.h"
#include "ulist.h"
#include "umutex.h"
#include "unifiedcache.h"
#include "uresimp.h"
#include "ustrenum.h"
#include "utracimp.h"
U_NAMESPACE_BEGIN
namespace {
static const char16_t *rootRules = …;
static int32_t rootRulesLength = …;
static UResourceBundle *rootBundle = …;
static UInitOnce gInitOnceUcolRes { … };
}
U_CDECL_BEGIN
static UBool U_CALLCONV
ucol_res_cleanup() { … }
void U_CALLCONV
CollationLoader::loadRootRules(UErrorCode &errorCode) { … }
U_CDECL_END
void
CollationLoader::appendRootRules(UnicodeString &s) { … }
void
CollationLoader::loadRules(const char *localeID, const char *collationType,
UnicodeString &rules, UErrorCode &errorCode) { … }
template<> U_I18N_API
const CollationCacheEntry *
LocaleCacheKey<CollationCacheEntry>::createObject(const void *creationContext,
UErrorCode &errorCode) const { … }
const CollationCacheEntry *
CollationLoader::loadTailoring(const Locale &locale, UErrorCode &errorCode) { … }
CollationLoader::CollationLoader(const CollationCacheEntry *re, const Locale &requested,
UErrorCode &errorCode)
: … { … }
CollationLoader::~CollationLoader() { … }
const CollationCacheEntry *
CollationLoader::createCacheEntry(UErrorCode &errorCode) { … }
const CollationCacheEntry *
CollationLoader::loadFromLocale(UErrorCode &errorCode) { … }
const CollationCacheEntry *
CollationLoader::loadFromBundle(UErrorCode &errorCode) { … }
const CollationCacheEntry *
CollationLoader::loadFromCollations(UErrorCode &errorCode) { … }
const CollationCacheEntry *
CollationLoader::loadFromData(UErrorCode &errorCode) { … }
const CollationCacheEntry *
CollationLoader::getCacheEntry(UErrorCode &errorCode) { … }
const CollationCacheEntry *
CollationLoader::makeCacheEntryFromRoot(
const Locale &,
UErrorCode &errorCode) const { … }
const CollationCacheEntry *
CollationLoader::makeCacheEntry(
const Locale &loc,
const CollationCacheEntry *entryFromCache,
UErrorCode &errorCode) { … }
U_NAMESPACE_END
U_NAMESPACE_USE
U_CAPI UCollator*
ucol_open(const char *loc,
UErrorCode *status)
{ … }
U_CAPI int32_t U_EXPORT2
ucol_getDisplayName( const char *objLoc,
const char *dispLoc,
char16_t *result,
int32_t resultLength,
UErrorCode *status)
{ … }
U_CAPI const char* U_EXPORT2
ucol_getAvailable(int32_t index)
{ … }
U_CAPI int32_t U_EXPORT2
ucol_countAvailable()
{ … }
#if !UCONFIG_NO_SERVICE
U_CAPI UEnumeration* U_EXPORT2
ucol_openAvailableLocales(UErrorCode *status) { … }
#endif
static const char RESOURCE_NAME[] = …;
static const char* const KEYWORDS[] = …;
#define KEYWORD_COUNT …
U_CAPI UEnumeration* U_EXPORT2
ucol_getKeywords(UErrorCode *status) { … }
U_CAPI UEnumeration* U_EXPORT2
ucol_getKeywordValues(const char *keyword, UErrorCode *status) { … }
static const UEnumeration defaultKeywordValues = …;
namespace {
struct KeywordsSink : public ResourceSink { … };
KeywordsSink::~KeywordsSink() { … }
}
U_CAPI UEnumeration* U_EXPORT2
ucol_getKeywordValuesForLocale(const char* , const char* locale,
UBool , UErrorCode* status) { … }
U_CAPI int32_t U_EXPORT2
ucol_getFunctionalEquivalent(char* result, int32_t resultCapacity,
const char* keyword, const char* locale,
UBool* isAvailable, UErrorCode* status)
{ … }
#endif