| Index: icu51/source/common/servslkf.cpp
|
| ===================================================================
|
| --- icu51/source/common/servslkf.cpp (revision 0)
|
| +++ icu51/source/common/servslkf.cpp (revision 0)
|
| @@ -0,0 +1,122 @@
|
| +/**
|
| + *******************************************************************************
|
| + * Copyright (C) 2001-2005, International Business Machines Corporation and *
|
| + * others. All Rights Reserved. *
|
| + *******************************************************************************
|
| + *
|
| + *******************************************************************************
|
| + */
|
| +#include "unicode/utypes.h"
|
| +
|
| +#if !UCONFIG_NO_SERVICE
|
| +
|
| +#include "unicode/resbund.h"
|
| +#include "uresimp.h"
|
| +#include "cmemory.h"
|
| +#include "servloc.h"
|
| +#include "ustrfmt.h"
|
| +#include "uhash.h"
|
| +#include "charstr.h"
|
| +#include "ucln_cmn.h"
|
| +#include "uassert.h"
|
| +
|
| +#define UNDERSCORE_CHAR ((UChar)0x005f)
|
| +#define AT_SIGN_CHAR ((UChar)64)
|
| +#define PERIOD_CHAR ((UChar)46)
|
| +
|
| +U_NAMESPACE_BEGIN
|
| +
|
| +/*
|
| + ******************************************************************
|
| + */
|
| +
|
| +SimpleLocaleKeyFactory::SimpleLocaleKeyFactory(UObject* objToAdopt,
|
| + const UnicodeString& locale,
|
| + int32_t kind,
|
| + int32_t coverage)
|
| + : LocaleKeyFactory(coverage)
|
| + , _obj(objToAdopt)
|
| + , _id(locale)
|
| + , _kind(kind)
|
| +{
|
| +}
|
| +
|
| +SimpleLocaleKeyFactory::SimpleLocaleKeyFactory(UObject* objToAdopt,
|
| + const Locale& locale,
|
| + int32_t kind,
|
| + int32_t coverage)
|
| + : LocaleKeyFactory(coverage)
|
| + , _obj(objToAdopt)
|
| + , _id()
|
| + , _kind(kind)
|
| +{
|
| + LocaleUtility::initNameFromLocale(locale, _id);
|
| +}
|
| +
|
| +SimpleLocaleKeyFactory::~SimpleLocaleKeyFactory()
|
| +{
|
| + delete _obj;
|
| + _obj = NULL;
|
| +}
|
| +
|
| +UObject*
|
| +SimpleLocaleKeyFactory::create(const ICUServiceKey& key, const ICUService* service, UErrorCode& status) const
|
| +{
|
| + if (U_SUCCESS(status)) {
|
| + const LocaleKey& lkey = (const LocaleKey&)key;
|
| + if (_kind == LocaleKey::KIND_ANY || _kind == lkey.kind()) {
|
| + UnicodeString keyID;
|
| + lkey.currentID(keyID);
|
| + if (_id == keyID) {
|
| + return service->cloneInstance(_obj);
|
| + }
|
| + }
|
| + }
|
| + return NULL;
|
| +}
|
| +
|
| +//UBool
|
| +//SimpleLocaleKeyFactory::isSupportedID(const UnicodeString& id, UErrorCode& /* status */) const
|
| +//{
|
| +// return id == _id;
|
| +//}
|
| +
|
| +void
|
| +SimpleLocaleKeyFactory::updateVisibleIDs(Hashtable& result, UErrorCode& status) const
|
| +{
|
| + if (U_SUCCESS(status)) {
|
| + if (_coverage & 0x1) {
|
| + result.remove(_id);
|
| + } else {
|
| + result.put(_id, (void*)this, status);
|
| + }
|
| + }
|
| +}
|
| +
|
| +#ifdef SERVICE_DEBUG
|
| +UnicodeString&
|
| +SimpleLocaleKeyFactory::debug(UnicodeString& result) const
|
| +{
|
| + LocaleKeyFactory::debug(result);
|
| + result.append(", id: ");
|
| + result.append(_id);
|
| + result.append(", kind: ");
|
| + result.append(_kind);
|
| + return result;
|
| +}
|
| +
|
| +UnicodeString&
|
| +SimpleLocaleKeyFactory::debugClass(UnicodeString& result) const
|
| +{
|
| + return result.append("SimpleLocaleKeyFactory");
|
| +}
|
| +#endif
|
| +
|
| +UOBJECT_DEFINE_RTTI_IMPLEMENTATION(SimpleLocaleKeyFactory)
|
| +
|
| +U_NAMESPACE_END
|
| +
|
| +/* !UCONFIG_NO_SERVICE */
|
| +#endif
|
| +
|
| +
|
|
|
| Property changes on: icu51/source/common/servslkf.cpp
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|