Index: icu46/source/common/servrbf.cpp |
=================================================================== |
--- icu46/source/common/servrbf.cpp (revision 0) |
+++ icu46/source/common/servrbf.cpp (revision 0) |
@@ -0,0 +1,94 @@ |
+/** |
+ ******************************************************************************* |
+ * 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 |
+ |
+ICUResourceBundleFactory::ICUResourceBundleFactory() |
+ : LocaleKeyFactory(VISIBLE) |
+ , _bundleName() |
+{ |
+} |
+ |
+ICUResourceBundleFactory::ICUResourceBundleFactory(const UnicodeString& bundleName) |
+ : LocaleKeyFactory(VISIBLE) |
+ , _bundleName(bundleName) |
+{ |
+} |
+ |
+ICUResourceBundleFactory::~ICUResourceBundleFactory() {} |
+ |
+const Hashtable* |
+ICUResourceBundleFactory::getSupportedIDs(UErrorCode& status) const |
+{ |
+ if (U_SUCCESS(status)) { |
+ return LocaleUtility::getAvailableLocaleNames(_bundleName); |
+ } |
+ return NULL; |
+} |
+ |
+UObject* |
+ICUResourceBundleFactory::handleCreate(const Locale& loc, int32_t /* kind */, const ICUService* /* service */, UErrorCode& status) const |
+{ |
+ if (U_SUCCESS(status)) { |
+ // _bundleName is a package name |
+ // and should only contain invariant characters |
+ // ??? is it always true that the max length of the bundle name is 19? |
+ // who made this change? -- dlf |
+ char pkg[20]; |
+ int32_t length; |
+ length=_bundleName.extract(0, INT32_MAX, pkg, (int32_t)sizeof(pkg), US_INV); |
+ if(length>=(int32_t)sizeof(pkg)) { |
+ return NULL; |
+ } |
+ return new ResourceBundle(pkg, loc, status); |
+ } |
+ return NULL; |
+} |
+ |
+#ifdef SERVICE_DEBUG |
+UnicodeString& |
+ICUResourceBundleFactory::debug(UnicodeString& result) const |
+{ |
+ LocaleKeyFactory::debug(result); |
+ result.append(", bundle: "); |
+ return result.append(_bundleName); |
+} |
+ |
+UnicodeString& |
+ICUResourceBundleFactory::debugClass(UnicodeString& result) const |
+{ |
+ return result.append("ICUResourceBundleFactory"); |
+} |
+#endif |
+ |
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ICUResourceBundleFactory) |
+ |
+U_NAMESPACE_END |
+ |
+/* !UCONFIG_NO_SERVICE */ |
+#endif |
+ |
+ |
Property changes on: icu46/source/common/servrbf.cpp |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |