1*63ce064aSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*63ce064aSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*63ce064aSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*63ce064aSAndrew Rist * distributed with this work for additional information 6*63ce064aSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*63ce064aSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*63ce064aSAndrew Rist * "License"); you may not use this file except in compliance 9*63ce064aSAndrew Rist * with the License. You may obtain a copy of the License at 10*63ce064aSAndrew Rist * 11*63ce064aSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*63ce064aSAndrew Rist * 13*63ce064aSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*63ce064aSAndrew Rist * software distributed under the License is distributed on an 15*63ce064aSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*63ce064aSAndrew Rist * KIND, either express or implied. See the License for the 17*63ce064aSAndrew Rist * specific language governing permissions and limitations 18*63ce064aSAndrew Rist * under the License. 19*63ce064aSAndrew Rist * 20*63ce064aSAndrew Rist *************************************************************/ 21*63ce064aSAndrew Rist 22*63ce064aSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef _LINGUISTIC_DEFS_HXX_ 25cdf0e10cSrcweir #define _LINGUISTIC_DEFS_HXX_ 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <com/sun/star/linguistic2/XSpellChecker.hpp> 28cdf0e10cSrcweir #include <com/sun/star/linguistic2/XProofreader.hpp> 29cdf0e10cSrcweir #include <com/sun/star/linguistic2/XHyphenator.hpp> 30cdf0e10cSrcweir #include <com/sun/star/linguistic2/XThesaurus.hpp> 31cdf0e10cSrcweir 32cdf0e10cSrcweir #include <boost/shared_ptr.hpp> 33cdf0e10cSrcweir 34cdf0e10cSrcweir class SvStream; 35cdf0e10cSrcweir 36cdf0e10cSrcweir 37cdf0e10cSrcweir /////////////////////////////////////////////////////////////////////////// 38cdf0e10cSrcweir 39cdf0e10cSrcweir #define A2OU(x) ::rtl::OUString::createFromAscii( x ) 40cdf0e10cSrcweir 41cdf0e10cSrcweir typedef boost::shared_ptr< SvStream > SvStreamPtr; 42cdf0e10cSrcweir 43cdf0e10cSrcweir namespace css = ::com::sun::star; 44cdf0e10cSrcweir 45cdf0e10cSrcweir /////////////////////////////////////////////////////////////////////////// 46cdf0e10cSrcweir 47cdf0e10cSrcweir struct LangSvcEntries 48cdf0e10cSrcweir { 49cdf0e10cSrcweir css::uno::Sequence< ::rtl::OUString > aSvcImplNames; 50cdf0e10cSrcweir 51cdf0e10cSrcweir sal_Int16 nLastTriedSvcIndex; 52cdf0e10cSrcweir bool bAlreadyWarned; 53cdf0e10cSrcweir bool bDoWarnAgain; 54cdf0e10cSrcweir LangSvcEntriesLangSvcEntries55cdf0e10cSrcweir LangSvcEntries() : nLastTriedSvcIndex(-1), bAlreadyWarned(false), bDoWarnAgain(false) {} 56cdf0e10cSrcweir LangSvcEntriesLangSvcEntries57cdf0e10cSrcweir inline LangSvcEntries( const css::uno::Sequence< ::rtl::OUString > &rSvcImplNames ) : 58cdf0e10cSrcweir aSvcImplNames(rSvcImplNames), 59cdf0e10cSrcweir nLastTriedSvcIndex(-1), bAlreadyWarned(false), bDoWarnAgain(false) 60cdf0e10cSrcweir { 61cdf0e10cSrcweir } 62cdf0e10cSrcweir LangSvcEntriesLangSvcEntries63cdf0e10cSrcweir inline LangSvcEntries( const ::rtl::OUString &rSvcImplName ) : 64cdf0e10cSrcweir nLastTriedSvcIndex(-1), bAlreadyWarned(false), bDoWarnAgain(false) 65cdf0e10cSrcweir { 66cdf0e10cSrcweir aSvcImplNames.realloc(1); 67cdf0e10cSrcweir aSvcImplNames[0] = rSvcImplName; 68cdf0e10cSrcweir } 69cdf0e10cSrcweir IsAlreadyWarnedLangSvcEntries70cdf0e10cSrcweir bool IsAlreadyWarned() const { return bAlreadyWarned != 0; } SetAlreadyWarnedLangSvcEntries71cdf0e10cSrcweir void SetAlreadyWarned( bool bVal ) { bAlreadyWarned = 0 != bVal; } IsDoWarnAgainLangSvcEntries72cdf0e10cSrcweir bool IsDoWarnAgain() const { return bDoWarnAgain != 0; } SetDoWarnAgainLangSvcEntries73cdf0e10cSrcweir void SetDoWarnAgain( bool bVal ) { bDoWarnAgain = 0 != bVal; } 74cdf0e10cSrcweir ClearLangSvcEntries75cdf0e10cSrcweir inline void Clear() 76cdf0e10cSrcweir { 77cdf0e10cSrcweir aSvcImplNames.realloc(0); 78cdf0e10cSrcweir nLastTriedSvcIndex = -1; 79cdf0e10cSrcweir bAlreadyWarned = false; 80cdf0e10cSrcweir bDoWarnAgain = false; 81cdf0e10cSrcweir } 82cdf0e10cSrcweir }; 83cdf0e10cSrcweir 84cdf0e10cSrcweir struct LangSvcEntries_Spell : public LangSvcEntries 85cdf0e10cSrcweir { 86cdf0e10cSrcweir css::uno::Sequence< css::uno::Reference< css::linguistic2::XSpellChecker > > aSvcRefs; 87cdf0e10cSrcweir LangSvcEntries_SpellLangSvcEntries_Spell88cdf0e10cSrcweir LangSvcEntries_Spell() : LangSvcEntries() {} LangSvcEntries_SpellLangSvcEntries_Spell89cdf0e10cSrcweir LangSvcEntries_Spell( const css::uno::Sequence< ::rtl::OUString > &rSvcImplNames ) : LangSvcEntries( rSvcImplNames ) {} 90cdf0e10cSrcweir }; 91cdf0e10cSrcweir 92cdf0e10cSrcweir struct LangSvcEntries_Grammar : public LangSvcEntries 93cdf0e10cSrcweir { 94cdf0e10cSrcweir css::uno::Sequence< css::uno::Reference< css::linguistic2::XProofreader > > aSvcRefs; 95cdf0e10cSrcweir LangSvcEntries_GrammarLangSvcEntries_Grammar96cdf0e10cSrcweir LangSvcEntries_Grammar() : LangSvcEntries() {} LangSvcEntries_GrammarLangSvcEntries_Grammar97cdf0e10cSrcweir LangSvcEntries_Grammar( const ::rtl::OUString &rSvcImplName ) : LangSvcEntries( rSvcImplName ) {} 98cdf0e10cSrcweir }; 99cdf0e10cSrcweir 100cdf0e10cSrcweir struct LangSvcEntries_Hyph : public LangSvcEntries 101cdf0e10cSrcweir { 102cdf0e10cSrcweir css::uno::Sequence< css::uno::Reference< css::linguistic2::XHyphenator > > aSvcRefs; 103cdf0e10cSrcweir LangSvcEntries_HyphLangSvcEntries_Hyph104cdf0e10cSrcweir LangSvcEntries_Hyph() : LangSvcEntries() {} LangSvcEntries_HyphLangSvcEntries_Hyph105cdf0e10cSrcweir LangSvcEntries_Hyph( const ::rtl::OUString &rSvcImplName ) : LangSvcEntries( rSvcImplName ) {} 106cdf0e10cSrcweir }; 107cdf0e10cSrcweir 108cdf0e10cSrcweir struct LangSvcEntries_Thes : public LangSvcEntries 109cdf0e10cSrcweir { 110cdf0e10cSrcweir css::uno::Sequence< css::uno::Reference< css::linguistic2::XThesaurus > > aSvcRefs; 111cdf0e10cSrcweir LangSvcEntries_ThesLangSvcEntries_Thes112cdf0e10cSrcweir LangSvcEntries_Thes() : LangSvcEntries() {} LangSvcEntries_ThesLangSvcEntries_Thes113cdf0e10cSrcweir LangSvcEntries_Thes( const css::uno::Sequence< ::rtl::OUString > &rSvcImplNames ) : LangSvcEntries( rSvcImplNames ) {} 114cdf0e10cSrcweir }; 115cdf0e10cSrcweir 116cdf0e10cSrcweir /////////////////////////////////////////////////////////////////////////// 117cdf0e10cSrcweir 118cdf0e10cSrcweir // virtual base class for the different dispatchers 119cdf0e10cSrcweir class LinguDispatcher 120cdf0e10cSrcweir { 121cdf0e10cSrcweir public: 122cdf0e10cSrcweir enum DspType { DSP_SPELL, DSP_HYPH, DSP_THES, DSP_GRAMMAR }; 123cdf0e10cSrcweir 124cdf0e10cSrcweir virtual void SetServiceList( const css::lang::Locale &rLocale, const css::uno::Sequence< rtl::OUString > &rSvcImplNames ) = 0; 125cdf0e10cSrcweir virtual css::uno::Sequence< rtl::OUString > GetServiceList( const css::lang::Locale &rLocale ) const = 0; 126cdf0e10cSrcweir virtual DspType GetDspType() const = 0; 127cdf0e10cSrcweir }; 128cdf0e10cSrcweir 129cdf0e10cSrcweir /////////////////////////////////////////////////////////////////////////// 130cdf0e10cSrcweir 131cdf0e10cSrcweir #endif 132cdf0e10cSrcweir 133