Index: icu46/source/common/servslkf.cpp |
=================================================================== |
--- icu46/source/common/servslkf.cpp (revision 0) |
+++ icu46/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: icu46/source/common/servslkf.cpp |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |