ICU-1532 use non-mutexed availableXxx methods

X-SVN-Rev: 8848
This commit is contained in:
Alan Liu 2002-06-11 22:52:32 +00:00
parent 736ad9286a
commit f7058c64a3
3 changed files with 89 additions and 12 deletions

View file

@ -4,7 +4,7 @@
* and others. All Rights Reserved.
*****************************************************************
* $Source: /xsrl/Nsvn/icu/icu/source/i18n/anytrans.cpp,v $
* $Revision: 1.2 $
* $Revision: 1.3 $
*****************************************************************
* Date Name Description
* 06/06/2002 aliu Creation.
@ -309,18 +309,18 @@ void AnyTransliterator::registerIDs() {
UErrorCode ec;
Hashtable seen(TRUE);
int32_t sourceCount = Transliterator::countAvailableSources();
int32_t sourceCount = Transliterator::_countAvailableSources();
for (int32_t s=0; s<sourceCount; ++s) {
UnicodeString source;
Transliterator::getAvailableSource(s, source);
Transliterator::_getAvailableSource(s, source);
// Ignore the "Any" source
if (source.caseCompare(ANY, 0 /*U_FOLD_CASE_DEFAULT*/) == 0) continue;
int32_t targetCount = Transliterator::countAvailableTargets(source);
int32_t targetCount = Transliterator::_countAvailableTargets(source);
for (int32_t t=0; t<targetCount; ++t) {
UnicodeString target;
Transliterator::getAvailableTarget(t, source, target);
Transliterator::_getAvailableTarget(t, source, target);
// Only process each target once
if (seen.geti(target) != 0) continue;
@ -331,11 +331,11 @@ void AnyTransliterator::registerIDs() {
UScriptCode targetScript = scriptNameToCode(target);
if (targetScript == USCRIPT_INVALID_CODE) continue;
int32_t variantCount = Transliterator::countAvailableVariants(source, target);
int32_t variantCount = Transliterator::_countAvailableVariants(source, target);
// assert(variantCount >= 1);
for (int32_t v=0; v<variantCount; ++v) {
UnicodeString variant;
Transliterator::getAvailableVariant(v, source, target, variant);
Transliterator::_getAvailableVariant(v, source, target, variant);
UnicodeString id;
TransliteratorIDParser::STVtoID(ANY, target, variant, id);

View file

@ -1156,7 +1156,7 @@ int32_t Transliterator::countAvailableSources(void) {
initializeRegistry();
}
Mutex lock(&registryMutex);
return registry->countAvailableSources();
return _countAvailableSources();
}
UnicodeString& Transliterator::getAvailableSource(int32_t index,
@ -1165,7 +1165,7 @@ UnicodeString& Transliterator::getAvailableSource(int32_t index,
initializeRegistry();
}
Mutex lock(&registryMutex);
return registry->getAvailableSource(index, result);
return _getAvailableSource(index, result);
}
int32_t Transliterator::countAvailableTargets(const UnicodeString& source) {
@ -1173,7 +1173,7 @@ int32_t Transliterator::countAvailableTargets(const UnicodeString& source) {
initializeRegistry();
}
Mutex lock(&registryMutex);
return registry->countAvailableTargets(source);
return _countAvailableTargets(source);
}
UnicodeString& Transliterator::getAvailableTarget(int32_t index,
@ -1183,7 +1183,7 @@ UnicodeString& Transliterator::getAvailableTarget(int32_t index,
initializeRegistry();
}
Mutex lock(&registryMutex);
return registry->getAvailableTarget(index, source, result);
return _getAvailableTarget(index, source, result);
}
int32_t Transliterator::countAvailableVariants(const UnicodeString& source,
@ -1192,7 +1192,7 @@ int32_t Transliterator::countAvailableVariants(const UnicodeString& source,
initializeRegistry();
}
Mutex lock(&registryMutex);
return registry->countAvailableVariants(source, target);
return _countAvailableVariants(source, target);
}
UnicodeString& Transliterator::getAvailableVariant(int32_t index,
@ -1203,6 +1203,37 @@ UnicodeString& Transliterator::getAvailableVariant(int32_t index,
initializeRegistry();
}
Mutex lock(&registryMutex);
return _getAvailableVariant(index, source, target, result);
}
int32_t Transliterator::_countAvailableSources(void) {
return registry->countAvailableSources();
}
UnicodeString& Transliterator::_getAvailableSource(int32_t index,
UnicodeString& result) {
return registry->getAvailableSource(index, result);
}
int32_t Transliterator::_countAvailableTargets(const UnicodeString& source) {
return registry->countAvailableTargets(source);
}
UnicodeString& Transliterator::_getAvailableTarget(int32_t index,
const UnicodeString& source,
UnicodeString& result) {
return registry->getAvailableTarget(index, source, result);
}
int32_t Transliterator::_countAvailableVariants(const UnicodeString& source,
const UnicodeString& target) {
return registry->countAvailableVariants(source, target);
}
UnicodeString& Transliterator::_getAvailableVariant(int32_t index,
const UnicodeString& source,
const UnicodeString& target,
UnicodeString& result) {
return registry->getAvailableVariant(index, source, target, result);
}

View file

@ -966,6 +966,52 @@ public:
const UnicodeString& target,
UnicodeString& result);
protected:
/**
* Non-mutexed internal method
* @internal
*/
static int32_t _countAvailableSources(void);
/**
* Non-mutexed internal method
* @internal
*/
static UnicodeString& _getAvailableSource(int32_t index,
UnicodeString& result);
/**
* Non-mutexed internal method
* @internal
*/
static int32_t _countAvailableTargets(const UnicodeString& source);
/**
* Non-mutexed internal method
* @internal
*/
static UnicodeString& _getAvailableTarget(int32_t index,
const UnicodeString& source,
UnicodeString& result);
/**
* Non-mutexed internal method
* @internal
*/
static int32_t _countAvailableVariants(const UnicodeString& source,
const UnicodeString& target);
/**
* Non-mutexed internal method
* @internal
*/
static UnicodeString& _getAvailableVariant(int32_t index,
const UnicodeString& source,
const UnicodeString& target,
UnicodeString& result);
public:
/**
* Return the class ID for this class. This is useful only for
* comparing to a return value from getDynamicClassID(). For example: