summaryrefslogtreecommitdiff
path: root/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx')
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx789
1 files changed, 0 insertions, 789 deletions
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx
deleted file mode 100644
index b31028a8513c..000000000000
--- a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx
+++ /dev/null
@@ -1,789 +0,0 @@
-/*************************************************************************
- *
- * $RCSfile: hyphenimp.cxx,v $
- *
- * $Revision: 1.5 $
- *
- * last change: $Author: svesik $ $Date: 2002-07-29 17:51:48 $
- *
- * The Contents of this file are made available subject to the terms of
- * either of the following licenses
- *
- * - GNU Lesser General Public License Version 2.1
- * - Sun Industry Standards Source License Version 1.1
- *
- * Sun Microsystems Inc., October, 2000
- *
- * GNU Lesser General Public License Version 2.1
- * =============================================
- * Copyright 2000 by Sun Microsystems, Inc.
- * 901 San Antonio Road, Palo Alto, CA 94303, USA
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software Foundation.
- *
- * This library 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 for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- *
- * Sun Industry Standards Source License Version 1.1
- * =================================================
- * The contents of this file are subject to the Sun Industry Standards
- * Source License Version 1.1 (the "License"); You may not use this file
- * except in compliance with the License. You may obtain a copy of the
- * License at http://www.openoffice.org/license.html.
- *
- * Software provided under this License is provided on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
- * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
- * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
- * See the License for the specific provisions governing your rights and
- * obligations concerning the Software.
- *
- * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
- *
- * Copyright: 2000 by Sun Microsystems, Inc.
- *
- * All Rights Reserved.
- *
- * Contributor(s): _______________________________________
- *
- *
- ************************************************************************/
-
-
-#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
-#include <com/sun/star/uno/Reference.h>
-#endif
-#ifndef _COM_SUN_STAR_LINGUISTIC2_XSEARCHABLEDICTIONARYLIST_HPP_
-#include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
-#endif
-
-//#include <com/sun/star/linguistic2/SpellFailure.hpp>
-#include <cppuhelper/factory.hxx> // helper for factories
-#include <com/sun/star/registry/XRegistryKey.hpp>
-
-#ifndef INCLUDED_SVTOOLS_PATHOPTIONS_HXX
-#include <svtools/pathoptions.hxx>
-#endif
-#ifndef INCLUDED_SVTOOLS_USEROPTIONS_HXX
-#include <svtools/useroptions.hxx>
-#endif
-#ifndef _TOOLS_DEBUG_HXX //autogen wg. DBG_ASSERT
-#include <tools/debug.hxx>
-#endif
-#ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
-#include <unotools/processfactory.hxx>
-#endif
-#ifndef _OSL_MUTEX_HXX_
-#include <osl/mutex.hxx>
-#endif
-
-#include <hyphen.h>
-
-#ifndef _HYPHENIMP_HXX
-#include <hyphenimp.hxx>
-#endif
-
-#include <linguistic/hyphdta.hxx>
-
-#ifndef _RTL_USTRING_HXX_
-#include <rtl/ustring.hxx>
-#endif
-
-#ifndef _RTL_USTRBUF_HXX_
-#include <rtl/ustrbuf.hxx>
-#endif
-
-#include <linguistic/lngprops.hxx>
-
-#ifndef INCLUDED_SVTOOLS_PATHOPTIONS_HXX
-#include <svtools/pathoptions.hxx>
-#endif
-#ifndef INCLUDED_SVTOOLS_USEROPTIONS_HXX
-#include <svtools/useroptions.hxx>
-#endif
-#include <osl/file.hxx>
-
-#include "dictmgr.hxx"
-#include "csutil.hxx"
-
-#include <stdio.h>
-#include <iostream>
-using namespace utl;
-using namespace osl;
-using namespace rtl;
-using namespace com::sun::star;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::uno;
-using namespace com::sun::star::linguistic2;
-using namespace linguistic;
-
-
-///////////////////////////////////////////////////////////////////////////
-
-BOOL operator == ( const Locale &rL1, const Locale &rL2 )
-{
- return rL1.Language == rL2.Language &&
- rL1.Country == rL2.Country &&
- rL1.Variant == rL2.Variant;
-}
-
-///////////////////////////////////////////////////////////////////////////
-
-
-
-
-
-Hyphenator::Hyphenator() :
- aEvtListeners ( GetLinguMutex() )
-{
- bDisposing = FALSE;
- pPropHelper = NULL;
- numdict = 0;
-
-}
-
-
-Hyphenator::~Hyphenator()
-{
- if (pPropHelper)
- pPropHelper->RemoveAsPropListener();
- if (numdict) {
- delete[] aDicts;
- aDicts = NULL;
- numdict = 0;
- }
-}
-
-
-PropertyHelper_Hyphen & Hyphenator::GetPropHelper_Impl()
-{
-
- if (!pPropHelper)
- {
- Reference< XPropertySet > xPropSet( GetLinguProperties(), UNO_QUERY );
-
- pPropHelper = new PropertyHelper_Hyphen ((XHyphenator *) this, xPropSet );
- xPropHelper = pPropHelper;
- pPropHelper->AddAsPropListener(); //! after a reference is established
- }
- return *pPropHelper;
-
-}
-
-
-Sequence< Locale > SAL_CALL Hyphenator::getLocales()
- throw(RuntimeException)
-{
-
- MutexGuard aGuard( GetLinguMutex() );
- SvtPathOptions aPathOpt;
-
- if (!numdict)
- {
-
- // this routine should return the locales supported by the installed
- // hyph dictionaries. So here we need to parse both the user edited
- // dictionary list and the shared dictionary list
- // to see what dictionaries the admin/user has installed
-
- int numusr; // number of user dictionary entries
- int numshr; // number of shared dictionary entries
- dictentry * spdict; // shared dict entry pointer
- dictentry * updict; // user dict entry pointer
-
- // invoke a dictionary manager to get the user dictionary list
- OUString usrlst = aPathOpt.GetUserDictionaryPath() + A2OU("/dictionary.lst");
- OUString ulst;
- osl::FileBase::getSystemPathFromFileURL(usrlst,ulst);
- OString uTmp(OU2ENC(ulst,osl_getThreadTextEncoding()));
- DictMgr* udMgr = new DictMgr(uTmp.getStr(),"HYPH");
- numusr = 0;
- if (udMgr)
- numusr = udMgr->get_list(&updict);
-
- // invoke a second dictionary manager to get the shared dictionary list
- OUString shrlst = aPathOpt.GetLinguisticPath() + A2OU("/ooo/dictionary.lst");
- OUString slst;
- osl::FileBase::getSystemPathFromFileURL(shrlst,slst);
- OString sTmp(OU2ENC(slst,osl_getThreadTextEncoding()));
- DictMgr* sdMgr = new DictMgr(sTmp.getStr(),"HYPH");
- numshr = 0;
- if (sdMgr)
- numshr = sdMgr->get_list(&spdict);
-
-
- // we really should merge these and remove duplicates but since
- // users can name their dictionaries anything they want it would
- // be impossible to know if a real duplication exists unless we
- // add some unique key to each hyphenation dictionary
- // we can worry about that when and if issuezilla's flood in
- numdict = numusr + numshr;
-
- if (numdict) {
- aDicts = new HDInfo[numdict];
- aSuppLocales.realloc(numdict);
- Locale * pLocale = aSuppLocales.getArray();
- int numlocs = 0;
- int newloc;
- int i,j;
- int k = 0;
-
- // first add the user dictionaries
- // keeping track of unique locales only
- for (i = 0; i < numusr; i++) {
- Locale nLoc( A2OU(updict->lang), A2OU(updict->region), OUString() );
-
- newloc = 1;
- for (j = 0; j < numlocs; j++) {
- if (nLoc == pLocale[j]) newloc = 0;
- }
- if (newloc) {
- pLocale[numlocs] = nLoc;
- numlocs++;
- }
- aDicts[k].aPtr = NULL;
- aDicts[k].aLoc = nLoc;
- aDicts[k].aEnc = 0;
- aDicts[k].aName = A2OU(updict->filename);
- k++;
- updict++;
- }
-
- // now add the shared dictionaries
- // keeping track of unique locales only
- for (i = 0; i < numshr; i++) {
- Locale nLoc( A2OU(spdict->lang), A2OU(spdict->region), OUString() );
-
- newloc = 1;
- for (j = 0; j < numlocs; j++) {
- if (nLoc == pLocale[j]) newloc = 0;
- }
- if (newloc) {
- pLocale[numlocs] = nLoc;
- numlocs++;
- }
- aDicts[k].aPtr = NULL;
- aDicts[k].aLoc = nLoc;
- aDicts[k].aEnc = 0;
- aDicts[k].aName = A2OU(spdict->filename);
- k++;
- spdict++;
- }
-
- // reallocate the size to just cover the unique locales
- aSuppLocales.realloc(numlocs);
-
- } else {
- // no dictionary.lst files found, just default to hyph_en.dic
- numdict = 1;
- aSuppLocales.realloc(1);
- Locale *pLocale = aSuppLocales.getArray();
- Locale nLoc( A2OU("en"), A2OU("US"), OUString() );
- pLocale[0] = nLoc;
- aDicts = new HDInfo[1];
- aDicts[0].aPtr = NULL;
- aDicts[0].aLoc = nLoc;
- aDicts[0].aEnc = 0;
- aDicts[0].aName = A2OU("hyph_en");
- }
-
- /* de-allocation of memory is handled inside the DictMgr */
- updict = NULL;
- if (udMgr) {
- delete udMgr;
- udMgr = NULL;
- }
- spdict = NULL;
- if (sdMgr) {
- delete sdMgr;
- sdMgr = NULL;
- }
-
- }
-
- return aSuppLocales;
-}
-
-
-
-sal_Bool SAL_CALL Hyphenator::hasLocale(const Locale& rLocale)
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- BOOL bRes = FALSE;
- if (!aSuppLocales.getLength())
- getLocales();
-
- INT32 nLen = aSuppLocales.getLength();
- for (INT32 i = 0; i < nLen; ++i)
- {
- const Locale *pLocale = aSuppLocales.getConstArray();
- if (rLocale == pLocale[i])
- {
- bRes = TRUE;
- break;
- }
- }
- return bRes;
-}
-
-
-Reference< XHyphenatedWord > SAL_CALL
-Hyphenator::hyphenate( const ::rtl::OUString& aWord,
- const ::com::sun::star::lang::Locale& aLocale,
- sal_Int16 nMaxLeading,
- const ::com::sun::star::beans::PropertyValues& aProperties )
- throw (com::sun::star::uno::RuntimeException,
- com::sun::star::lang::IllegalArgumentException)
-{
- SvtPathOptions aPathOpt;
-
- int nHyphenationPos = -1;
- int wordlen;
- char *hyphens;
- char *lcword;
- int k = 0;
-
-
- HyphenDict *dict = NULL;
- rtl_TextEncoding aEnc = 0;
-
- Reference< XHyphenatedWord > xRes;
-
- k = -1;
- for (int j = 0; j < numdict; j++)
- if (aLocale == aDicts[j].aLoc) k = j;
-
-
- // if we have a hyphenation dictionary matching this locale
- if (k != -1) {
-
- // if this dictinary has not been loaded yet do that
- if (!aDicts[k].aPtr) {
-
- OUString DictFN = aDicts[k].aName + A2OU(".dic");
- OUString userdictpath;
- OUString dictpath;
-
- osl::FileBase::getSystemPathFromFileURL(
- aPathOpt.GetUserDictionaryPath() + A2OU("/"),
- userdictpath);
-
- osl::FileBase::getSystemPathFromFileURL(
- aPathOpt.GetLinguisticPath() + A2OU("/ooo/"),
- dictpath);
-
- OString uTmp(OU2ENC(userdictpath + DictFN,osl_getThreadTextEncoding()));
- OString sTmp(OU2ENC(dictpath + DictFN,osl_getThreadTextEncoding()));
-
- if ( ( dict = hnj_hyphen_load ( uTmp.getStr() ) ) == NULL )
- if ( ( dict = hnj_hyphen_load ( sTmp.getStr()) ) == NULL )
- {
- fprintf(stderr, "Couldn't find file %s and %s\n", OU2ENC(userdictpath + DictFN, osl_getThreadTextEncoding()), OU2ENC(userdictpath + DictFN, osl_getThreadTextEncoding() ));
- return NULL;
- }
- aDicts[k].aPtr = dict;
- aDicts[k].aEnc = rtl_getTextEncodingFromUnixCharset(dict->cset);
- }
-
- // other wise hyphenate the word with that dictionary
- dict = aDicts[k].aPtr;
- aEnc = aDicts[k].aEnc;
-
- OString encWord(OU2ENC(aWord,aEnc));
-
- wordlen = encWord.getLength();
- lcword = new char[wordlen+1];
- hyphens = new char[wordlen+5];
- enmkallsmall(lcword,encWord.getStr(),dict->cset);
-
- if (hnj_hyphen_hyphenate(dict, lcword, wordlen, hyphens))
- {
- //whoops something did not work
- delete[] hyphens;
- delete[] lcword;
- return NULL;
- }
-
- OUStringBuffer hyphenatedWord;
- INT32 Leading = GetPosInWordToCheck( aWord, nMaxLeading );
-
- for (INT32 i = 0; i < encWord.getLength(); i++)
- {
- hyphenatedWord.append(aWord[i]);
- if ((hyphens[i]&1) && (i < Leading))
- {
- nHyphenationPos = i;
- hyphenatedWord.append(sal_Unicode('='));
- }
- }
-
- if (nHyphenationPos == -1)
- xRes = NULL;
- else
- {
- xRes = new HyphenatedWord( aWord, LocaleToLanguage( aLocale ), nHyphenationPos,
- aWord, nHyphenationPos );
- }
-
- delete[] hyphens;
- delete[] lcword;
- return xRes;
-
- }
- return NULL;
-}
-
-Reference < XHyphenatedWord > SAL_CALL
- Hyphenator::queryAlternativeSpelling( const ::rtl::OUString& aWord,
- const ::com::sun::star::lang::Locale& aLocale,
- sal_Int16 nIndex,
- const ::com::sun::star::beans::PropertyValues& aProperties )
- throw(::com::sun::star::lang::IllegalArgumentException,
- ::com::sun::star::uno::RuntimeException)
-{
- /* alternative spelling isn't supported by tex dictionaries */
- return NULL;
-}
-
-Reference< XPossibleHyphens > SAL_CALL
- Hyphenator::createPossibleHyphens( const ::rtl::OUString& aWord,
- const ::com::sun::star::lang::Locale& aLocale,
- const ::com::sun::star::beans::PropertyValues& aProperties )
- throw(::com::sun::star::lang::IllegalArgumentException,
- ::com::sun::star::uno::RuntimeException)
-
-{
-
- SvtPathOptions aPathOpt;
- // CharClass chclass( rSMgr, aLocale );
-
- int nHyphenationPos = -1;
- int wordlen;
- char *hyphens;
- char *lcword;
- int k;
-
-
- HyphenDict *dict;
- rtl_TextEncoding aEnc;
-
- Reference< XPossibleHyphens > xRes;
- k = -1;
- for (int j = 0; j < numdict; j++)
- if (aLocale == aDicts[j].aLoc) k = j;
-
- dict = NULL;
- aEnc = 0;
-
- // if we have a hyphenationd citionary matching this locale
- if (k != -1) {
-
- // if this dictioanry has not been loaded yet do that
- if (!aDicts[k].aPtr) {
-
- OUString DictFN = aDicts[k].aName + A2OU(".dic");
- OUString userdictpath;
- OUString dictpath;
- osl::FileBase::getSystemPathFromFileURL(
- aPathOpt.GetUserDictionaryPath() + A2OU("/"),
- userdictpath);
-
- osl::FileBase::getSystemPathFromFileURL(
- aPathOpt.GetLinguisticPath() + A2OU("/ooo/"),
- dictpath);
- OString uTmp(OU2ENC(userdictpath + DictFN,osl_getThreadTextEncoding()));
- OString sTmp(OU2ENC(dictpath + DictFN,osl_getThreadTextEncoding()));
-
-
- if ( ( dict = hnj_hyphen_load ( uTmp.getStr() ) ) == NULL )
- if ( ( dict = hnj_hyphen_load ( sTmp.getStr()) ) == NULL )
- {
- fprintf(stderr, "Couldn't find file %s and %s\n", OU2ENC(userdictpath + DictFN, osl_getThreadTextEncoding()), OU2ENC(userdictpath + DictFN, osl_getThreadTextEncoding() ));
- return NULL;
- }
- aDicts[k].aPtr = dict;
- aDicts[k].aEnc = rtl_getTextEncodingFromUnixCharset(dict->cset);
- }
-
- // other wise hyphenate the word with that dictionary
- dict = aDicts[k].aPtr;
- aEnc = aDicts[k].aEnc;
-
- OString encWord(OU2ENC(aWord, aEnc));
-
- wordlen = encWord.getLength();
- lcword = new char[wordlen+1];
- hyphens = new char[wordlen+5];
- enmkallsmall(lcword,encWord.getStr(),dict->cset);
-
- if (hnj_hyphen_hyphenate(dict, lcword, wordlen, hyphens))
- {
- delete[] hyphens;
- delete[] lcword;
- return NULL;
- }
-
- INT16 nHyphCount = 0;
-
- for (INT16 i = 0; i < encWord.getLength(); i++)
- if (hyphens[i]&1)
- nHyphCount++;
-
- Sequence< INT16 > aHyphPos(nHyphCount);
- INT16 *pPos = aHyphPos.getArray();
- OUStringBuffer hyphenatedWordBuffer;
- OUString hyphenatedWord;
- nHyphCount = 0;
-
- for (i = 0; i < encWord.getLength(); i++)
- {
- hyphenatedWordBuffer.append(aWord[i]);
- if (hyphens[i]&1)
- {
- pPos[nHyphCount] = i;
- hyphenatedWordBuffer.append(sal_Unicode('='));
- nHyphCount++;
- }
- }
-
- hyphenatedWord = hyphenatedWordBuffer.makeStringAndClear();
-
- xRes = new PossibleHyphens( aWord, LocaleToLanguage( aLocale ),
- hyphenatedWord, aHyphPos );
-
- delete[] hyphens;
- delete[] lcword;
- return xRes;
- }
-
- return NULL;
-
-}
-
-
-
-Reference< XInterface > SAL_CALL Hyphenator_CreateInstance(
- const Reference< XMultiServiceFactory > & rSMgr )
- throw(Exception)
-{
-
- Reference< XInterface > xService = (cppu::OWeakObject*) new Hyphenator;
- return xService;
-}
-
-
-sal_Bool SAL_CALL
- Hyphenator::addLinguServiceEventListener(
- const Reference< XLinguServiceEventListener >& rxLstnr )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- BOOL bRes = FALSE;
- if (!bDisposing && rxLstnr.is())
- {
- bRes = GetPropHelper().addLinguServiceEventListener( rxLstnr );
- }
- return bRes;
-}
-
-
-sal_Bool SAL_CALL
- Hyphenator::removeLinguServiceEventListener(
- const Reference< XLinguServiceEventListener >& rxLstnr )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- BOOL bRes = FALSE;
- if (!bDisposing && rxLstnr.is())
- {
- DBG_ASSERT( xPropHelper.is(), "xPropHelper non existent" );
- bRes = GetPropHelper().removeLinguServiceEventListener( rxLstnr );
- }
- return bRes;
-}
-
-
-OUString SAL_CALL
- Hyphenator::getServiceDisplayName( const Locale& rLocale )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
- return A2OU( "ALTLinux LibHnj Hyphenator" );
-}
-
-
-void SAL_CALL
- Hyphenator::initialize( const Sequence< Any >& rArguments )
- throw(Exception, RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (!pPropHelper)
- {
- INT32 nLen = rArguments.getLength();
- if (2 == nLen)
- {
- Reference< XPropertySet > xPropSet;
- rArguments.getConstArray()[0] >>= xPropSet;
- //rArguments.getConstArray()[1] >>= xDicList;
-
- //! Pointer allows for access of the non-UNO functions.
- //! And the reference to the UNO-functions while increasing
- //! the ref-count and will implicitly free the memory
- //! when the object is not longer used.
- pPropHelper = new PropertyHelper_Hyphen( (XHyphenator *) this, xPropSet );
- xPropHelper = pPropHelper;
- pPropHelper->AddAsPropListener(); //! after a reference is established
- }
- else
- DBG_ERROR( "wrong number of arguments in sequence" );
-
- }
-}
-
-
-void SAL_CALL
- Hyphenator::dispose()
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (!bDisposing)
- {
- bDisposing = TRUE;
- EventObject aEvtObj( (XHyphenator *) this );
- aEvtListeners.disposeAndClear( aEvtObj );
- }
-}
-
-
-void SAL_CALL
- Hyphenator::addEventListener( const Reference< XEventListener >& rxListener )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (!bDisposing && rxListener.is())
- aEvtListeners.addInterface( rxListener );
-}
-
-
-void SAL_CALL
- Hyphenator::removeEventListener( const Reference< XEventListener >& rxListener )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- if (!bDisposing && rxListener.is())
- aEvtListeners.removeInterface( rxListener );
-}
-
-
-///////////////////////////////////////////////////////////////////////////
-// Service specific part
-//
-
-OUString SAL_CALL Hyphenator::getImplementationName()
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- return getImplementationName_Static();
-}
-
-
-sal_Bool SAL_CALL Hyphenator::supportsService( const OUString& ServiceName )
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- Sequence< OUString > aSNL = getSupportedServiceNames();
- const OUString * pArray = aSNL.getConstArray();
- for( INT32 i = 0; i < aSNL.getLength(); i++ )
- if( pArray[i] == ServiceName )
- return TRUE;
- return FALSE;
-}
-
-
-Sequence< OUString > SAL_CALL Hyphenator::getSupportedServiceNames()
- throw(RuntimeException)
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- return getSupportedServiceNames_Static();
-}
-
-
-Sequence< OUString > Hyphenator::getSupportedServiceNames_Static()
- throw()
-{
- MutexGuard aGuard( GetLinguMutex() );
-
- Sequence< OUString > aSNS( 1 ); // auch mehr als 1 Service moeglich
- aSNS.getArray()[0] = A2OU( SN_HYPHENATOR );
- return aSNS;
-}
-
-
-sal_Bool SAL_CALL Hyphenator_writeInfo(
- void * /*pServiceManager*/, registry::XRegistryKey * pRegistryKey )
-{
-
- try
- {
- String aImpl( '/' );
- aImpl += Hyphenator::getImplementationName_Static().getStr();
- aImpl.AppendAscii( "/UNO/SERVICES" );
- Reference< registry::XRegistryKey > xNewKey =
- pRegistryKey->createKey( aImpl );
- Sequence< OUString > aServices =
- Hyphenator::getSupportedServiceNames_Static();
- for( INT32 i = 0; i < aServices.getLength(); i++ )
- xNewKey->createKey( aServices.getConstArray()[i] );
-
- return sal_True;
- }
- catch(Exception &)
- {
- return sal_False;
- }
-}
-
-
-void * SAL_CALL Hyphenator_getFactory( const sal_Char * pImplName,
- XMultiServiceFactory * pServiceManager, void * )
-{
- void * pRet = 0;
- if ( !Hyphenator::getImplementationName_Static().compareToAscii( pImplName ) )
- {
- Reference< XSingleServiceFactory > xFactory =
- cppu::createOneInstanceFactory(
- pServiceManager,
- Hyphenator::getImplementationName_Static(),
- Hyphenator_CreateInstance,
- Hyphenator::getSupportedServiceNames_Static());
- // acquire, because we return an interface pointer instead of a reference
- xFactory->acquire();
- pRet = xFactory.get();
- }
- return pRet;
-}
-
-
-///////////////////////////////////////////////////////////////////////////