summaryrefslogtreecommitdiff
path: root/i18npool
diff options
context:
space:
mode:
authorRĂ¼diger Timm <rt@openoffice.org>2004-01-20 12:21:04 +0000
committerRĂ¼diger Timm <rt@openoffice.org>2004-01-20 12:21:04 +0000
commitf37598c33269288de858d0bf356e724719f4831a (patch)
tree1f60c2807ac454a279c1a179b5f5123b56c17ff6 /i18npool
parent09a6646fbceca16a7868e0c872bc8d4bf38c63e5 (diff)
INTEGRATION: CWS i18n10 (1.2.100); FILE MERGED
2003/12/17 20:18:26 khong 1.2.100.1: #i22138# remove TOOLS usage from i18npool
Diffstat (limited to 'i18npool')
-rw-r--r--i18npool/source/characterclassification/characterclassificationImpl.cxx191
1 files changed, 95 insertions, 96 deletions
diff --git a/i18npool/source/characterclassification/characterclassificationImpl.cxx b/i18npool/source/characterclassification/characterclassificationImpl.cxx
index 489812f6ec27..a66fa55b9687 100644
--- a/i18npool/source/characterclassification/characterclassificationImpl.cxx
+++ b/i18npool/source/characterclassification/characterclassificationImpl.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: characterclassificationImpl.cxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: er $ $Date: 2002-03-26 16:59:03 $
+ * last change: $Author: rt $ $Date: 2004-01-20 13:21:04 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -71,176 +71,175 @@ using namespace rtl;
namespace com { namespace sun { namespace star { namespace i18n {
CharacterClassificationImpl::CharacterClassificationImpl(
- const Reference < lang::XMultiServiceFactory >& rxMSF ) : xMSF( rxMSF )
+ const Reference < lang::XMultiServiceFactory >& rxMSF ) : xMSF( rxMSF )
{
- if (createLocaleSpecificCharacterClassification(OUString::createFromAscii("Unicode"), Locale()))
- xUCI = cachedItem->xCI;
+ if (createLocaleSpecificCharacterClassification(OUString::createFromAscii("Unicode"), Locale()))
+ xUCI = cachedItem->xCI;
}
CharacterClassificationImpl::~CharacterClassificationImpl() {
- // Clear lookuptable
- for (cachedItem = (lookupTableItem*)lookupTable.First();
- cachedItem; cachedItem = (lookupTableItem*)lookupTable.Next())
- delete cachedItem;
- lookupTable.Clear();
+ // Clear lookuptable
+ for (sal_Int32 l = 0; l < lookupTable.size(); l++)
+ delete lookupTable[l];
+ lookupTable.clear();
}
OUString SAL_CALL
CharacterClassificationImpl::toUpper( const OUString& Text, sal_Int32 nPos,
- sal_Int32 nCount, const Locale& rLocale ) throw(RuntimeException)
+ sal_Int32 nCount, const Locale& rLocale ) throw(RuntimeException)
{
return getLocaleSpecificCharacterClassification(rLocale)->toUpper(Text, nPos, nCount, rLocale);
}
OUString SAL_CALL
CharacterClassificationImpl::toLower( const OUString& Text, sal_Int32 nPos,
- sal_Int32 nCount, const Locale& rLocale ) throw(RuntimeException)
+ sal_Int32 nCount, const Locale& rLocale ) throw(RuntimeException)
{
return getLocaleSpecificCharacterClassification(rLocale)->toLower(Text, nPos, nCount, rLocale);
}
OUString SAL_CALL
CharacterClassificationImpl::toTitle( const OUString& Text, sal_Int32 nPos,
- sal_Int32 nCount, const Locale& rLocale ) throw(RuntimeException)
+ sal_Int32 nCount, const Locale& rLocale ) throw(RuntimeException)
{
return getLocaleSpecificCharacterClassification(rLocale)->toTitle(Text, nPos, nCount, rLocale);
}
sal_Int16 SAL_CALL
CharacterClassificationImpl::getType( const OUString& Text, sal_Int32 nPos )
- throw(RuntimeException)
+ throw(RuntimeException)
{
- if (xUCI.is())
- return xUCI->getType(Text, nPos);
- throw RuntimeException();
+ if (xUCI.is())
+ return xUCI->getType(Text, nPos);
+ throw RuntimeException();
}
sal_Int16 SAL_CALL
CharacterClassificationImpl::getCharacterDirection( const OUString& Text, sal_Int32 nPos )
- throw(RuntimeException)
+ throw(RuntimeException)
{
- if (xUCI.is())
- return xUCI->getCharacterDirection(Text, nPos);
- throw RuntimeException();
+ if (xUCI.is())
+ return xUCI->getCharacterDirection(Text, nPos);
+ throw RuntimeException();
}
sal_Int16 SAL_CALL
CharacterClassificationImpl::getScript( const OUString& Text, sal_Int32 nPos )
- throw(RuntimeException)
+ throw(RuntimeException)
{
- if (xUCI.is())
- return xUCI->getScript(Text, nPos);
- throw RuntimeException();
+ if (xUCI.is())
+ return xUCI->getScript(Text, nPos);
+ throw RuntimeException();
}
sal_Int32 SAL_CALL
CharacterClassificationImpl::getCharacterType( const OUString& Text, sal_Int32 nPos,
- const Locale& rLocale ) throw(RuntimeException)
+ const Locale& rLocale ) throw(RuntimeException)
{
- return getLocaleSpecificCharacterClassification(rLocale)->getCharacterType(Text, nPos, rLocale);
+ return getLocaleSpecificCharacterClassification(rLocale)->getCharacterType(Text, nPos, rLocale);
}
sal_Int32 SAL_CALL
CharacterClassificationImpl::getStringType( const OUString& Text, sal_Int32 nPos,
- sal_Int32 nCount, const Locale& rLocale ) throw(RuntimeException)
+ sal_Int32 nCount, const Locale& rLocale ) throw(RuntimeException)
{
- return getLocaleSpecificCharacterClassification(rLocale)->getStringType(Text, nPos, nCount, rLocale);
+ return getLocaleSpecificCharacterClassification(rLocale)->getStringType(Text, nPos, nCount, rLocale);
}
ParseResult SAL_CALL CharacterClassificationImpl::parseAnyToken(
- const OUString& Text, sal_Int32 nPos, const Locale& rLocale,
- sal_Int32 startCharTokenType, const OUString& userDefinedCharactersStart,
- sal_Int32 contCharTokenType, const OUString& userDefinedCharactersCont )
- throw(RuntimeException)
+ const OUString& Text, sal_Int32 nPos, const Locale& rLocale,
+ sal_Int32 startCharTokenType, const OUString& userDefinedCharactersStart,
+ sal_Int32 contCharTokenType, const OUString& userDefinedCharactersCont )
+ throw(RuntimeException)
{
return getLocaleSpecificCharacterClassification(rLocale)->parseAnyToken(Text, nPos, rLocale,
- startCharTokenType,userDefinedCharactersStart,
- contCharTokenType, userDefinedCharactersCont);
+ startCharTokenType,userDefinedCharactersStart,
+ contCharTokenType, userDefinedCharactersCont);
}
ParseResult SAL_CALL CharacterClassificationImpl::parsePredefinedToken(
- sal_Int32 nTokenType, const OUString& Text, sal_Int32 nPos,
- const Locale& rLocale, sal_Int32 startCharTokenType,
- const OUString& userDefinedCharactersStart, sal_Int32 contCharTokenType,
- const OUString& userDefinedCharactersCont ) throw(RuntimeException)
+ sal_Int32 nTokenType, const OUString& Text, sal_Int32 nPos,
+ const Locale& rLocale, sal_Int32 startCharTokenType,
+ const OUString& userDefinedCharactersStart, sal_Int32 contCharTokenType,
+ const OUString& userDefinedCharactersCont ) throw(RuntimeException)
{
return getLocaleSpecificCharacterClassification(rLocale)->parsePredefinedToken(
- nTokenType, Text, nPos, rLocale, startCharTokenType, userDefinedCharactersStart,
- contCharTokenType, userDefinedCharactersCont);
+ nTokenType, Text, nPos, rLocale, startCharTokenType, userDefinedCharactersStart,
+ contCharTokenType, userDefinedCharactersCont);
}
sal_Bool SAL_CALL CharacterClassificationImpl::createLocaleSpecificCharacterClassification(const OUString& serviceName, const Locale& rLocale)
{
- // to share service between same Language but different Country code, like zh_CN and zh_SG
- for (cachedItem = (lookupTableItem*)lookupTable.First();
- cachedItem; cachedItem = (lookupTableItem*)lookupTable.Next()) {
- if (serviceName == cachedItem->aName) {
- lookupTable.Insert( cachedItem = new lookupTableItem(rLocale, serviceName, cachedItem->xCI) );
- return sal_True;
+ // to share service between same Language but different Country code, like zh_CN and zh_SG
+ for (sal_Int32 l = 0; l < lookupTable.size(); l++) {
+ cachedItem = lookupTable[l];
+ if (serviceName == cachedItem->aName) {
+ lookupTable.push_back( cachedItem = new lookupTableItem(rLocale, serviceName, cachedItem->xCI) );
+ return sal_True;
+ }
}
- }
- Reference < XInterface > xI = xMSF->createInstance(
- OUString::createFromAscii("com.sun.star.i18n.CharacterClassification_") + serviceName);
+ Reference < XInterface > xI = xMSF->createInstance(
+ OUString::createFromAscii("com.sun.star.i18n.CharacterClassification_") + serviceName);
- Reference < XCharacterClassification > xCI;
- if ( xI.is() ) {
- xI->queryInterface(::getCppuType((const Reference< XCharacterClassification>*)0) ) >>= xCI;
- if (xCI.is()) {
- lookupTable.Insert( cachedItem = new lookupTableItem(rLocale, serviceName, xCI) );
- return sal_True;
+ Reference < XCharacterClassification > xCI;
+ if ( xI.is() ) {
+ xI->queryInterface(::getCppuType((const Reference< XCharacterClassification>*)0) ) >>= xCI;
+ if (xCI.is()) {
+ lookupTable.push_back( cachedItem = new lookupTableItem(rLocale, serviceName, xCI) );
+ return sal_True;
+ }
}
- }
- return sal_False;
+ return sal_False;
}
Reference < XCharacterClassification > SAL_CALL
CharacterClassificationImpl::getLocaleSpecificCharacterClassification(const Locale& rLocale)
- throw(RuntimeException)
+ throw(RuntimeException)
{
- // reuse instance if locale didn't change
- if (cachedItem && cachedItem->equals(rLocale))
- return cachedItem->xCI;
- else if (xMSF.is()) {
- for (cachedItem = (lookupTableItem*)lookupTable.First();
- cachedItem; cachedItem = (lookupTableItem*)lookupTable.Next()) {
- if (cachedItem->equals(rLocale))
+ // reuse instance if locale didn't change
+ if (cachedItem && cachedItem->equals(rLocale))
return cachedItem->xCI;
- }
+ else if (xMSF.is()) {
+ for (sal_Int32 i = 0; i < lookupTable.size(); i++) {
+ cachedItem = lookupTable[i];
+ if (cachedItem->equals(rLocale))
+ return cachedItem->xCI;
+ }
- static sal_Unicode under = (sal_Unicode)'_';
- static OUString tw(OUString::createFromAscii("TW"));
- sal_Int32 l = rLocale.Language.getLength();
- sal_Int32 c = rLocale.Country.getLength();
- sal_Int32 v = rLocale.Variant.getLength();
- OUStringBuffer aBuf(l+c+v+3);
+ static sal_Unicode under = (sal_Unicode)'_';
+ static OUString tw(OUString::createFromAscii("TW"));
+ sal_Int32 l = rLocale.Language.getLength();
+ sal_Int32 c = rLocale.Country.getLength();
+ sal_Int32 v = rLocale.Variant.getLength();
+ OUStringBuffer aBuf(l+c+v+3);
- // load service with name <base>_<lang>_<country>_<varian>
- if ((l > 0 && c > 0 && v > 0 &&
- createLocaleSpecificCharacterClassification(aBuf.append(rLocale.Language).append(under).append(
- rLocale.Country).append(under).append(rLocale.Variant).makeStringAndClear(), rLocale)) ||
- // load service with name <base>_<lang>_<country>
- (l > 0 && c > 0 &&
- createLocaleSpecificCharacterClassification(aBuf.append(rLocale.Language).append(under).append(
- rLocale.Country).makeStringAndClear(), rLocale)) ||
- (l > 0 && c > 0 && rLocale.Language.compareToAscii("zh") == 0 &&
- (rLocale.Country.compareToAscii("HK") == 0 ||
- rLocale.Country.compareToAscii("MO") == 0) &&
- // if the country code is HK or MO, one more step to try TW.
- createLocaleSpecificCharacterClassification(aBuf.append(rLocale.Language).append(under).append(
- tw).makeStringAndClear(), rLocale)) ||
- (l > 0 &&
- // load service with name <base>_<lang>
- createLocaleSpecificCharacterClassification(rLocale.Language, rLocale))) {
- return cachedItem->xCI;
- } else if (xUCI.is()) {
- lookupTable.Insert( cachedItem = new lookupTableItem(rLocale, OUString::createFromAscii("Unicode"), xUCI) );
- return cachedItem->xCI;
+ // load service with name <base>_<lang>_<country>_<varian>
+ if ((l > 0 && c > 0 && v > 0 &&
+ createLocaleSpecificCharacterClassification(aBuf.append(rLocale.Language).append(under).append(
+ rLocale.Country).append(under).append(rLocale.Variant).makeStringAndClear(), rLocale)) ||
+ // load service with name <base>_<lang>_<country>
+ (l > 0 && c > 0 &&
+ createLocaleSpecificCharacterClassification(aBuf.append(rLocale.Language).append(under).append(
+ rLocale.Country).makeStringAndClear(), rLocale)) ||
+ (l > 0 && c > 0 && rLocale.Language.compareToAscii("zh") == 0 &&
+ (rLocale.Country.compareToAscii("HK") == 0 ||
+ rLocale.Country.compareToAscii("MO") == 0) &&
+ // if the country code is HK or MO, one more step to try TW.
+ createLocaleSpecificCharacterClassification(aBuf.append(rLocale.Language).append(under).append(
+ tw).makeStringAndClear(), rLocale)) ||
+ (l > 0 &&
+ // load service with name <base>_<lang>
+ createLocaleSpecificCharacterClassification(rLocale.Language, rLocale))) {
+ return cachedItem->xCI;
+ } else if (xUCI.is()) {
+ lookupTable.push_back( cachedItem = new lookupTableItem(rLocale, OUString::createFromAscii("Unicode"), xUCI) );
+ return cachedItem->xCI;
+ }
}
- }
- throw RuntimeException();
+ throw RuntimeException();
}
const sal_Char cClass[] = "com.sun.star.i18n.CharacterClassification";