diff options
Diffstat (limited to 'i18npool/source/inputchecker/inputsequencechecker.cxx')
-rw-r--r-- | i18npool/source/inputchecker/inputsequencechecker.cxx | 169 |
1 files changed, 0 insertions, 169 deletions
diff --git a/i18npool/source/inputchecker/inputsequencechecker.cxx b/i18npool/source/inputchecker/inputsequencechecker.cxx deleted file mode 100644 index f9ffdb18e8..0000000000 --- a/i18npool/source/inputchecker/inputsequencechecker.cxx +++ /dev/null @@ -1,169 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_i18npool.hxx" - -#include <inputsequencechecker.hxx> -#include <com/sun/star/i18n/InputSequenceCheckMode.hpp> -#include <com/sun/star/i18n/UnicodeType.hpp> -#include <i18nutil/unicode.hxx> -#include <rtl/ustrbuf.hxx> - -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::lang; -using namespace ::rtl; - -namespace com { namespace sun { namespace star { namespace i18n { - -InputSequenceCheckerImpl::InputSequenceCheckerImpl( const Reference < XMultiServiceFactory >& rxMSF ) : xMSF( rxMSF ) -{ - serviceName = "com.sun.star.i18n.InputSequenceCheckerImpl"; - cachedItem = NULL; -} - -InputSequenceCheckerImpl::InputSequenceCheckerImpl() -{ -} - -InputSequenceCheckerImpl::~InputSequenceCheckerImpl() -{ - // Clear lookuptable - for (size_t 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) -{ - if (inputCheckMode == InputSequenceCheckMode::PASSTHROUGH) - return sal_True; - - 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. -} - -sal_Int32 SAL_CALL -InputSequenceCheckerImpl::correctInputSequence(OUString& Text, sal_Int32 nStartPos, - sal_Unicode inputChar, sal_Int16 inputCheckMode) throw(RuntimeException) -{ - if (inputCheckMode != InputSequenceCheckMode::PASSTHROUGH) { - sal_Char* language = getLanguageByScripType(Text[nStartPos], inputChar); - - if (language) - return getInputSequenceChecker(language)->correctInputSequence(Text, nStartPos, inputChar, inputCheckMode); - } - Text = Text.replaceAt(++nStartPos, 0, OUString(inputChar)); - return nStartPos; -} - -static ScriptTypeList typeList[] = { - //{ UnicodeScript_kHebrew, UnicodeScript_kHebrew }, // 10, - //{ UnicodeScript_kArabic, UnicodeScript_kArabic }, // 11, - { UnicodeScript_kDevanagari,UnicodeScript_kDevanagari, UnicodeScript_kDevanagari }, // 14, - { UnicodeScript_kThai, UnicodeScript_kThai, UnicodeScript_kThai }, // 24, - - { UnicodeScript_kScriptCount, UnicodeScript_kScriptCount, UnicodeScript_kScriptCount } // 88 -}; - -sal_Char* SAL_CALL -InputSequenceCheckerImpl::getLanguageByScripType(sal_Unicode cChar, sal_Unicode nChar) -{ - 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 (sal_Char*)"th"; - //case UnicodeScript_kArabic: return (sal_Char*)"ar"; - //case UnicodeScript_kHebrew: return (sal_Char*)"he"; - case UnicodeScript_kDevanagari: return (sal_Char*)"hi"; - } - } - return NULL; -} - -Reference< XExtendedInputSequenceChecker >& SAL_CALL -InputSequenceCheckerImpl::getInputSequenceChecker(sal_Char* rLanguage) throw (RuntimeException) -{ - if (cachedItem && cachedItem->aLanguage == rLanguage) { - return cachedItem->xISC; - } - else if (xMSF.is()) { - for (size_t l = 0; l < lookupTable.size(); l++) { - cachedItem = lookupTable[l]; - if (cachedItem->aLanguage == rLanguage) - return cachedItem->xISC; - } - - Reference < uno::XInterface > xI = xMSF->createInstance( - OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.i18n.InputSequenceChecker_")) + - OUString::createFromAscii(rLanguage)); - - if ( xI.is() ) { - Reference< XExtendedInputSequenceChecker > xISC; - xI->queryInterface( getCppuType((const Reference< XExtendedInputSequenceChecker>*)0) ) >>= xISC; - if (xISC.is()) { - lookupTable.push_back(cachedItem = new lookupTableItem(rLanguage, xISC)); - return cachedItem->xISC; - } - } - } - throw RuntimeException(); -} - -OUString SAL_CALL -InputSequenceCheckerImpl::getImplementationName(void) throw( RuntimeException ) -{ - return OUString::createFromAscii(serviceName); -} - -sal_Bool SAL_CALL -InputSequenceCheckerImpl::supportsService(const OUString& rServiceName) throw( RuntimeException ) -{ - return !rServiceName.compareToAscii(serviceName); -} - -Sequence< OUString > SAL_CALL -InputSequenceCheckerImpl::getSupportedServiceNames(void) throw( RuntimeException ) -{ - Sequence< OUString > aRet(1); - aRet[0] = OUString::createFromAscii(serviceName); - return aRet; -} - -} } } } - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |