diff options
author | RĂ¼diger Timm <rt@openoffice.org> | 2004-01-20 12:41:00 +0000 |
---|---|---|
committer | RĂ¼diger Timm <rt@openoffice.org> | 2004-01-20 12:41:00 +0000 |
commit | 7625e1331b4ef38e646a6339deae5b9db4c428c5 (patch) | |
tree | 5e9a697f977cb5fc396eb7b4d62ae85b9d0ff240 /i18npool | |
parent | 5dcdf8fca3574a93a507187e8c0c359d0458f744 (diff) |
INTEGRATION: CWS i18n10 (1.3.48); FILE MERGED
2003/12/17 20:21:18 khong 1.3.48.1: #i22138# remove TOOLS usage from i18npool, and make i18npool a good component
Diffstat (limited to 'i18npool')
-rw-r--r-- | i18npool/source/inputchecker/inputsequencechecker.cxx | 111 |
1 files changed, 55 insertions, 56 deletions
diff --git a/i18npool/source/inputchecker/inputsequencechecker.cxx b/i18npool/source/inputchecker/inputsequencechecker.cxx index 0e9eb1795400..6f7425de909f 100644 --- a/i18npool/source/inputchecker/inputsequencechecker.cxx +++ b/i18npool/source/inputchecker/inputsequencechecker.cxx @@ -2,9 +2,9 @@ * * $RCSfile: inputsequencechecker.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: vg $ $Date: 2003-04-24 11:07:23 $ + * last change: $Author: rt $ $Date: 2004-01-20 13:41:00 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -73,8 +73,8 @@ namespace com { namespace sun { namespace star { namespace i18n { InputSequenceCheckerImpl::InputSequenceCheckerImpl( const Reference < XMultiServiceFactory >& rxMSF ) : xMSF( rxMSF ) { - serviceName = "com.sun.star.i18n.InputSequenceCheckerImpl"; - cachedItem = NULL; + serviceName = "com.sun.star.i18n.InputSequenceCheckerImpl"; + cachedItem = NULL; } InputSequenceCheckerImpl::InputSequenceCheckerImpl() @@ -83,35 +83,35 @@ InputSequenceCheckerImpl::InputSequenceCheckerImpl() InputSequenceCheckerImpl::~InputSequenceCheckerImpl() { - // 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(); } sal_Bool SAL_CALL InputSequenceCheckerImpl::checkInputSequence(const OUString& Text, sal_Int32 nStartPos, - sal_Unicode inputChar, sal_Int16 inputCheckMode) throw(RuntimeException) + sal_Unicode inputChar, sal_Int16 inputCheckMode) throw(RuntimeException) { - if (inputCheckMode == InputSequenceCheckMode::PASSTHROUGH) - return sal_True; + if (inputCheckMode == InputSequenceCheckMode::PASSTHROUGH) + return sal_True; - sal_Char* language = getLanguageByScripType(Text[nStartPos], inputChar); + sal_Char* language = getLanguageByScripType(Text[nStartPos], inputChar); - if (language) - return getInputSequenceChecker(language)->checkInputSequence(Text, nStartPos, inputChar, inputCheckMode); - else - return sal_True; // not a checkable languages. + if (language) + return getInputSequenceChecker(language)->checkInputSequence(Text, nStartPos, inputChar, inputCheckMode); + else + return sal_True; // not a checkable languages. } static ScriptTypeList typeList[] = { - //{ UnicodeScript_kHebrew, UnicodeScript_kHebrew }, // 10, - //{ UnicodeScript_kArabic, UnicodeScript_kArabic }, // 11, - //{ UnicodeScript_kDevanagari, UnicodeScript_kDevanagari }, // 14, - { UnicodeScript_kThai, UnicodeScript_kThai }, // 24, + //{ UnicodeScript_kHebrew, UnicodeScript_kHebrew }, // 10, + //{ UnicodeScript_kArabic, UnicodeScript_kArabic }, // 11, + //{ UnicodeScript_kDevanagari, UnicodeScript_kDevanagari }, // 14, + { UnicodeScript_kThai, UnicodeScript_kThai }, // 24, - { UnicodeScript_kScriptCount, UnicodeScript_kScriptCount } // 88 + { UnicodeScript_kScriptCount, UnicodeScript_kScriptCount } // 88 }; sal_Char* SAL_CALL @@ -120,13 +120,13 @@ InputSequenceCheckerImpl::getLanguageByScripType(sal_Unicode cChar, sal_Unicode sal_Int16 type = unicode::getUnicodeScriptType( cChar, typeList, UnicodeScript_kScriptCount ); if (type != UnicodeScript_kScriptCount && - type == unicode::getUnicodeScriptType( nChar, typeList, UnicodeScript_kScriptCount )) { - switch(type) { - case UnicodeScript_kThai: return "th"; - //case UnicodeScript_kArabic: return "ar"; - //case UnicodeScript_kHebrew: return "he"; - //cace UnicodeScript_kDevanagari: return "hi"; - } + type == unicode::getUnicodeScriptType( nChar, typeList, UnicodeScript_kScriptCount )) { + switch(type) { + case UnicodeScript_kThai: return "th"; + //case UnicodeScript_kArabic: return "ar"; + //case UnicodeScript_kHebrew: return "he"; + //cace UnicodeScript_kDevanagari: return "hi"; + } } return NULL; } @@ -134,51 +134,50 @@ InputSequenceCheckerImpl::getLanguageByScripType(sal_Unicode cChar, sal_Unicode Reference< XInputSequenceChecker >& SAL_CALL InputSequenceCheckerImpl::getInputSequenceChecker(sal_Char* rLanguage) throw (RuntimeException) { - if (cachedItem && cachedItem->aLanguage == rLanguage) { - return cachedItem->xISC; - } - else if (xMSF.is()) { - for (cachedItem = (lookupTableItem*)lookupTable.First(); - cachedItem; cachedItem = (lookupTableItem*)lookupTable.Next()) { - if (cachedItem->aLanguage == rLanguage) { - return cachedItem->xISC; - } - } - - Reference < uno::XInterface > xI = xMSF->createInstance( - OUString::createFromAscii("com.sun.star.i18n.InputSequenceChecker_") + - OUString::createFromAscii(rLanguage)); - - if ( xI.is() ) { - Reference< XInputSequenceChecker > xISC; - xI->queryInterface( getCppuType((const Reference< XInputSequenceChecker>*)0) ) >>= xISC; - if (xISC.is()) { - lookupTable.Insert(cachedItem = new lookupTableItem(rLanguage, xISC)); + if (cachedItem && cachedItem->aLanguage == rLanguage) { return cachedItem->xISC; } + else if (xMSF.is()) { + for (sal_Int32 l = 0; l < lookupTable.size(); l++) { + cachedItem = lookupTable[l]; + if (cachedItem->aLanguage == rLanguage) + return cachedItem->xISC; + } + + Reference < uno::XInterface > xI = xMSF->createInstance( + OUString::createFromAscii("com.sun.star.i18n.InputSequenceChecker_") + + OUString::createFromAscii(rLanguage)); + + if ( xI.is() ) { + Reference< XInputSequenceChecker > xISC; + xI->queryInterface( getCppuType((const Reference< XInputSequenceChecker>*)0) ) >>= xISC; + if (xISC.is()) { + lookupTable.push_back(cachedItem = new lookupTableItem(rLanguage, xISC)); + return cachedItem->xISC; + } + } } - } - throw RuntimeException(); + throw RuntimeException(); } OUString SAL_CALL InputSequenceCheckerImpl::getImplementationName(void) throw( RuntimeException ) { - return OUString::createFromAscii(serviceName); + return OUString::createFromAscii(serviceName); } sal_Bool SAL_CALL InputSequenceCheckerImpl::supportsService(const OUString& rServiceName) throw( RuntimeException ) { - return !rServiceName.compareToAscii(serviceName); + return !rServiceName.compareToAscii(serviceName); } Sequence< OUString > SAL_CALL InputSequenceCheckerImpl::getSupportedServiceNames(void) throw( RuntimeException ) { - Sequence< OUString > aRet(1); - aRet[0] = OUString::createFromAscii(serviceName); - return aRet; + Sequence< OUString > aRet(1); + aRet[0] = OUString::createFromAscii(serviceName); + return aRet; } } } } } |