summaryrefslogtreecommitdiff
path: root/lingucomponent/source/languageguessing/guesslang.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'lingucomponent/source/languageguessing/guesslang.cxx')
-rw-r--r--lingucomponent/source/languageguessing/guesslang.cxx435
1 files changed, 0 insertions, 435 deletions
diff --git a/lingucomponent/source/languageguessing/guesslang.cxx b/lingucomponent/source/languageguessing/guesslang.cxx
deleted file mode 100644
index 49e033040..000000000
--- a/lingucomponent/source/languageguessing/guesslang.cxx
+++ /dev/null
@@ -1,435 +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_lingucomponent.hxx"
-
-#include <iostream>
-
-#include <tools/debug.hxx>
-
-#include <sal/config.h>
-#include <cppuhelper/factory.hxx>
-#include <cppuhelper/implementationentry.hxx>
-#include <cppuhelper/implbase2.hxx>
-#include <tools/string.hxx>
-
-#include <simpleguesser.hxx>
-#include <guess.hxx>
-
-#include <com/sun/star/registry/XRegistryKey.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/linguistic2/XLanguageGuessing.hpp>
-#include <unotools/pathoptions.hxx>
-#include <unotools/localfilehelper.hxx>
-#include <osl/thread.h>
-
-#include <sal/macros.h>
-
-using namespace ::rtl;
-using namespace ::osl;
-using namespace ::cppu;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::linguistic2;
-
-namespace css = ::com::sun::star;
-
-//==================================================================================================
-
-#define A2OU(x) ::rtl::OUString::createFromAscii( x )
-
-#define SERVICENAME "com.sun.star.linguistic2.LanguageGuessing"
-#define IMPLNAME "com.sun.star.lingu2.LanguageGuessing"
-
-static Sequence< OUString > getSupportedServiceNames_LangGuess_Impl()
-{
- Sequence<OUString> names(1);
- names[0] = A2OU( SERVICENAME );
- return names;
-}
-
-static OUString getImplementationName_LangGuess_Impl()
-{
- return A2OU( IMPLNAME );
-}
-
-static osl::Mutex & GetLangGuessMutex()
-{
- static osl::Mutex aMutex;
- return aMutex;
-}
-
-
-class LangGuess_Impl :
- public ::cppu::WeakImplHelper2<
- XLanguageGuessing,
- XServiceInfo >
-{
- SimpleGuesser m_aGuesser;
- bool m_bInitialized;
- css::uno::Reference< css::uno::XComponentContext > m_xContext;
-
- LangGuess_Impl( const LangGuess_Impl & ); // not defined
- LangGuess_Impl & operator =( const LangGuess_Impl & ); // not defined
-
- virtual ~LangGuess_Impl() {}
- void EnsureInitialized();
-
-public:
- explicit LangGuess_Impl(css::uno::Reference< css::uno::XComponentContext > const & rxContext);
-
- // XServiceInfo implementation
- virtual OUString SAL_CALL getImplementationName( ) throw(RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(RuntimeException);
- virtual Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw(RuntimeException);
- static Sequence< OUString > SAL_CALL getSupportedServiceNames_Static( );
-
- // XLanguageGuessing implementation
- virtual ::com::sun::star::lang::Locale SAL_CALL guessPrimaryLanguage( const ::rtl::OUString& aText, ::sal_Int32 nStartPos, ::sal_Int32 nLen ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL disableLanguages( const ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale >& aLanguages ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL enableLanguages( const ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale >& aLanguages ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > SAL_CALL getAvailableLanguages( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > SAL_CALL getEnabledLanguages( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > SAL_CALL getDisabledLanguages( ) throw (::com::sun::star::uno::RuntimeException);
-
- // implementation specific
- void SetFingerPrintsDB( const rtl::OUString &fileName ) throw (RuntimeException);
-
- static const OUString & SAL_CALL getImplementationName_Static() throw();
-
-};
-
-//*************************************************************************
-
-LangGuess_Impl::LangGuess_Impl(css::uno::Reference< css::uno::XComponentContext > const & rxContext) :
- m_bInitialized( false ),
- m_xContext( rxContext )
-{
-}
-
-//*************************************************************************
-
-void LangGuess_Impl::EnsureInitialized()
-{
- if (!m_bInitialized)
- {
- // set this to true at the very start to prevent loops because of
- // implicitly called functions below
- m_bInitialized = true;
-
- // set default fingerprint path to where those get installed
- String aPhysPath;
- String aURL( SvtPathOptions().GetFingerprintPath() );
- utl::LocalFileHelper::ConvertURLToPhysicalName( aURL, aPhysPath );
-#ifdef WNT
- aPhysPath += '\\';
-#else
- aPhysPath += '/';
-#endif
-
- SetFingerPrintsDB( aPhysPath );
-
- //
- // disable currently not functional languages...
- //
- struct LangCountry
- {
- const char *pLang;
- const char *pCountry;
- };
- LangCountry aDisable[] =
- {
- {"gv", ""}, {"sco", ""}, // no lang-id available yet...
-// {"hy", ""}, {"drt", ""}, // 0 bytes fingerprints...
- {"zh", "CN"}, {"zh", "TW"}, {"ja", ""}, {"ko", ""}, // not yet correct functional...
- {"ka", ""}, {"hi", ""}, {"mr", ""}, {"ne", ""},
- {"sa", ""}, {"ta", ""}, {"th", ""},
- {"qu", ""}, {"yi", ""}
- };
- sal_Int32 nNum = SAL_N_ELEMENTS(aDisable);
- Sequence< Locale > aDisableSeq( nNum );
- Locale *pDisableSeq = aDisableSeq.getArray();
- for (sal_Int32 i = 0; i < nNum; ++i)
- {
- Locale aLocale;
- aLocale.Language = OUString::createFromAscii( aDisable[i].pLang );
- aLocale.Country = OUString::createFromAscii( aDisable[i].pCountry );
- pDisableSeq[i] = aLocale;
- }
- disableLanguages( aDisableSeq );
- DBG_ASSERT( nNum == getDisabledLanguages().getLength(), "size mismatch" );
- }
-}
-
-//*************************************************************************
-
-Locale SAL_CALL LangGuess_Impl::guessPrimaryLanguage(
- const ::rtl::OUString& rText,
- ::sal_Int32 nStartPos,
- ::sal_Int32 nLen )
- throw (lang::IllegalArgumentException, uno::RuntimeException)
-{
- osl::MutexGuard aGuard( GetLangGuessMutex() );
-
- EnsureInitialized();
-
- lang::Locale aRes;
- if (nStartPos >=0 && nLen >= 0 && nStartPos + nLen <= rText.getLength())
- {
- OString o( OUStringToOString( rText.copy(nStartPos, nLen), RTL_TEXTENCODING_UTF8 ) );
- Guess g = m_aGuesser.GuessPrimaryLanguage((char*)o.getStr());
- aRes.Language = OUString::createFromAscii(g.GetLanguage().c_str());
- aRes.Country = OUString::createFromAscii(g.GetCountry().c_str());
- }
- else
- throw lang::IllegalArgumentException();
-
- return aRes;
-}
-
-//*************************************************************************
-#define DEFAULT_CONF_FILE_NAME "fpdb.conf"
-
-void LangGuess_Impl::SetFingerPrintsDB(
- const rtl::OUString &filePath )
- throw (RuntimeException)
-{
- //! text encoding for file name / path needs to be in the same encoding the OS uses
- OString path = OUStringToOString( filePath, osl_getThreadTextEncoding() );
- OString conf_file_name( DEFAULT_CONF_FILE_NAME );
- OString conf_file_path(path);
- conf_file_path += conf_file_name;
-
- m_aGuesser.SetDBPath((const char*)conf_file_path.getStr(), (const char*)path.getStr());
-}
-
-//*************************************************************************
-uno::Sequence< Locale > SAL_CALL LangGuess_Impl::getAvailableLanguages( )
- throw (uno::RuntimeException)
-{
- osl::MutexGuard aGuard( GetLangGuessMutex() );
-
- EnsureInitialized();
-
- Sequence< com::sun::star::lang::Locale > aRes;
- vector<Guess> gs = m_aGuesser.GetAllManagedLanguages();
- aRes.realloc(gs.size());
-
- com::sun::star::lang::Locale *pRes = aRes.getArray();
-
- for(size_t i = 0; i < gs.size() ; i++ ){
- com::sun::star::lang::Locale current_aRes;
- current_aRes.Language = A2OU( gs[i].GetLanguage().c_str() );
- current_aRes.Country = A2OU( gs[i].GetCountry().c_str() );
- pRes[i] = current_aRes;
- }
-
- return aRes;
-}
-
-//*************************************************************************
-uno::Sequence< Locale > SAL_CALL LangGuess_Impl::getEnabledLanguages( )
- throw (uno::RuntimeException)
-{
- osl::MutexGuard aGuard( GetLangGuessMutex() );
-
- EnsureInitialized();
-
- Sequence< com::sun::star::lang::Locale > aRes;
- vector<Guess> gs = m_aGuesser.GetAvailableLanguages();
- aRes.realloc(gs.size());
-
- com::sun::star::lang::Locale *pRes = aRes.getArray();
-
- for(size_t i = 0; i < gs.size() ; i++ ){
- com::sun::star::lang::Locale current_aRes;
- current_aRes.Language = A2OU( gs[i].GetLanguage().c_str() );
- current_aRes.Country = A2OU( gs[i].GetCountry().c_str() );
- pRes[i] = current_aRes;
- }
-
- return aRes;
-}
-
-//*************************************************************************
-uno::Sequence< Locale > SAL_CALL LangGuess_Impl::getDisabledLanguages( )
- throw (uno::RuntimeException)
-{
- osl::MutexGuard aGuard( GetLangGuessMutex() );
-
- EnsureInitialized();
-
- Sequence< com::sun::star::lang::Locale > aRes;
- vector<Guess> gs = m_aGuesser.GetUnavailableLanguages();
- aRes.realloc(gs.size());
-
- com::sun::star::lang::Locale *pRes = aRes.getArray();
-
- for(size_t i = 0; i < gs.size() ; i++ ){
- com::sun::star::lang::Locale current_aRes;
- current_aRes.Language = A2OU( gs[i].GetLanguage().c_str() );
- current_aRes.Country = A2OU( gs[i].GetCountry().c_str() );
- pRes[i] = current_aRes;
- }
-
- return aRes;
-}
-
-//*************************************************************************
-void SAL_CALL LangGuess_Impl::disableLanguages(
- const uno::Sequence< Locale >& rLanguages )
- throw (lang::IllegalArgumentException, uno::RuntimeException)
-{
- osl::MutexGuard aGuard( GetLangGuessMutex() );
-
- EnsureInitialized();
-
- sal_Int32 nLanguages = rLanguages.getLength();
- const Locale *pLanguages = rLanguages.getConstArray();
-
- for (sal_Int32 i = 0; i < nLanguages; ++i)
- {
- string language;
-
- OString l = OUStringToOString( pLanguages[i].Language, RTL_TEXTENCODING_ASCII_US );
- OString c = OUStringToOString( pLanguages[i].Country, RTL_TEXTENCODING_ASCII_US );
-
- language += l.getStr();
- language += "-";
- language += c.getStr();
- m_aGuesser.DisableLanguage(language);
- }
-}
-
-//*************************************************************************
-void SAL_CALL LangGuess_Impl::enableLanguages(
- const uno::Sequence< Locale >& rLanguages )
- throw (lang::IllegalArgumentException, uno::RuntimeException)
-{
- osl::MutexGuard aGuard( GetLangGuessMutex() );
-
- EnsureInitialized();
-
- sal_Int32 nLanguages = rLanguages.getLength();
- const Locale *pLanguages = rLanguages.getConstArray();
-
- for (sal_Int32 i = 0; i < nLanguages; ++i)
- {
- string language;
-
- OString l = OUStringToOString( pLanguages[i].Language, RTL_TEXTENCODING_ASCII_US );
- OString c = OUStringToOString( pLanguages[i].Country, RTL_TEXTENCODING_ASCII_US );
-
- language += l.getStr();
- language += "-";
- language += c.getStr();
- m_aGuesser.EnableLanguage(language);
- }
-}
-
-//*************************************************************************
-OUString SAL_CALL LangGuess_Impl::getImplementationName( )
- throw(RuntimeException)
-{
- osl::MutexGuard aGuard( GetLangGuessMutex() );
- return A2OU( IMPLNAME );
-}
-
-//*************************************************************************
-sal_Bool SAL_CALL LangGuess_Impl::supportsService( const OUString& ServiceName )
- throw(RuntimeException)
-{
- osl::MutexGuard aGuard( GetLangGuessMutex() );
- Sequence< OUString > aSNL = getSupportedServiceNames();
- const OUString * pArray = aSNL.getArray();
- for( sal_Int32 i = 0; i < aSNL.getLength(); i++ )
- if( pArray[i] == ServiceName )
- return sal_True;
- return sal_False;
-}
-
-//*************************************************************************
-Sequence<OUString> SAL_CALL LangGuess_Impl::getSupportedServiceNames( )
- throw(RuntimeException)
-{
- osl::MutexGuard aGuard( GetLangGuessMutex() );
- return getSupportedServiceNames_Static();
-}
-
-//*************************************************************************
-Sequence<OUString> SAL_CALL LangGuess_Impl::getSupportedServiceNames_Static( )
-{
- OUString aName( A2OU( SERVICENAME ) );
- return Sequence< OUString >( &aName, 1 );
-}
-
-//*************************************************************************
-
-
-/**
- * Function to create a new component instance; is needed by factory helper implementation.
- * @param xMgr service manager to if the components needs other component instances
- */
-Reference< XInterface > SAL_CALL LangGuess_Impl_create(
- Reference< XComponentContext > const & xContext )
- SAL_THROW( () )
-{
- return static_cast< ::cppu::OWeakObject * >( new LangGuess_Impl(xContext) );
-}
-
-//##################################################################################################
-//#### EXPORTED ### functions to allow for registration and creation of the UNO component
-//##################################################################################################
-
-static struct ::cppu::ImplementationEntry s_component_entries [] =
-{
- {
- LangGuess_Impl_create, getImplementationName_LangGuess_Impl,
- getSupportedServiceNames_LangGuess_Impl,
- ::cppu::createSingleComponentFactory,
- 0, 0
- },
- { 0, 0, 0, 0, 0, 0 }
-};
-
-extern "C"
-{
-
-SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(
- sal_Char const * implName, lang::XMultiServiceFactory * xMgr,
- registry::XRegistryKey * xRegistry )
-{
- return ::cppu::component_getFactoryHelper(
- implName, xMgr, xRegistry, s_component_entries );
-}
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */