mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-07 22:44:49 +00:00
ICU-1532 use non-mutexed availableXxx methods
X-SVN-Rev: 8848
This commit is contained in:
parent
736ad9286a
commit
f7058c64a3
3 changed files with 89 additions and 12 deletions
|
@ -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);
|
||||
|
|
|
@ -1156,7 +1156,7 @@ int32_t Transliterator::countAvailableSources(void) {
|
|||
initializeRegistry();
|
||||
}
|
||||
Mutex lock(®istryMutex);
|
||||
return registry->countAvailableSources();
|
||||
return _countAvailableSources();
|
||||
}
|
||||
|
||||
UnicodeString& Transliterator::getAvailableSource(int32_t index,
|
||||
|
@ -1165,7 +1165,7 @@ UnicodeString& Transliterator::getAvailableSource(int32_t index,
|
|||
initializeRegistry();
|
||||
}
|
||||
Mutex lock(®istryMutex);
|
||||
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(®istryMutex);
|
||||
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(®istryMutex);
|
||||
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(®istryMutex);
|
||||
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(®istryMutex);
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Add table
Reference in a new issue