1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 #ifndef _I18N_INPUTCHECKER_HXX_ 28 #define _I18N_INPUTCHECKER_HXX_ 29 30 #include <comphelper/processfactory.hxx> 31 #include <cppuhelper/implbase2.hxx> // helper for implementations 32 #include <com/sun/star/lang/XMultiServiceFactory.hpp> 33 #include <com/sun/star/lang/XServiceInfo.hpp> 34 #include <com/sun/star/i18n/XExtendedInputSequenceChecker.hpp> 35 36 #include <vector> 37 38 namespace com { namespace sun { namespace star { namespace i18n { 39 40 // ---------------------------------------------------- 41 // class InputSequenceCheckerImpl 42 // ---------------------------------------------------- 43 class InputSequenceCheckerImpl : public cppu::WeakImplHelper2 44 < 45 com::sun::star::i18n::XExtendedInputSequenceChecker, 46 com::sun::star::lang::XServiceInfo 47 > 48 { 49 public: 50 InputSequenceCheckerImpl( const com::sun::star::uno::Reference < com::sun::star::lang::XMultiServiceFactory >& rxMSF ); 51 InputSequenceCheckerImpl(); 52 ~InputSequenceCheckerImpl(); 53 54 virtual sal_Bool SAL_CALL checkInputSequence(const rtl::OUString& Text, sal_Int32 nStartPos, 55 sal_Unicode inputChar, sal_Int16 inputCheckMode) throw(com::sun::star::uno::RuntimeException); 56 57 virtual sal_Int32 SAL_CALL correctInputSequence(rtl::OUString& Text, sal_Int32 nStartPos, 58 sal_Unicode inputChar, sal_Int16 inputCheckMode) throw(com::sun::star::uno::RuntimeException); 59 60 //XServiceInfo 61 virtual rtl::OUString SAL_CALL getImplementationName() throw( com::sun::star::uno::RuntimeException ); 62 virtual sal_Bool SAL_CALL supportsService(const rtl::OUString& ServiceName) 63 throw( com::sun::star::uno::RuntimeException ); 64 virtual com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames() 65 throw( com::sun::star::uno::RuntimeException ); 66 67 protected: 68 sal_Int16 checkMode; 69 const sal_Char *serviceName; 70 71 private : 72 struct lookupTableItem { 73 lookupTableItem(const sal_Char* rLanguage, const com::sun::star::uno::Reference < com::sun::star::i18n::XExtendedInputSequenceChecker >& rxISC) : 74 aLanguage(rLanguage), xISC(rxISC) {} 75 const sal_Char* aLanguage; 76 com::sun::star::uno::Reference < com::sun::star::i18n::XExtendedInputSequenceChecker > xISC; 77 }; 78 std::vector<lookupTableItem*> lookupTable; 79 lookupTableItem *cachedItem; 80 81 com::sun::star::uno::Reference < com::sun::star::lang::XMultiServiceFactory > xMSF; 82 83 com::sun::star::uno::Reference< com::sun::star::i18n::XExtendedInputSequenceChecker >& SAL_CALL getInputSequenceChecker(sal_Char* rLanguage) 84 throw (com::sun::star::uno::RuntimeException); 85 sal_Char* SAL_CALL getLanguageByScripType(sal_Unicode cChar, sal_Unicode nChar); 86 }; 87 88 } } } } 89 90 #endif // _I18N_BREAKITERATOR_HXX_ 91