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