summaryrefslogtreecommitdiff
path: root/lingucomponent/source/hyphenator/altlinuxhyph/hyphen
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2003-03-26 12:03:05 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2003-03-26 12:03:05 +0000
commit4507deb1ecfc4f48b263781b2f611a0c6af24cea (patch)
treee8a024fd3c048f6cbbb00862405295859b4f7a4f /lingucomponent/source/hyphenator/altlinuxhyph/hyphen
parent8ad6f1e3f71afb347e85304cd21830213b6863f7 (diff)
MWS_SRX644: migrate branch mws_srx644 -> HEAD
Diffstat (limited to 'lingucomponent/source/hyphenator/altlinuxhyph/hyphen')
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp3
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.cxx365
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.hxx206
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx119
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphen.map8
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx792
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx250
-rw-r--r--lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk180
8 files changed, 1923 insertions, 0 deletions
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp
new file mode 100644
index 000000000000..b0f85bf7bebf
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/exports.dxp
@@ -0,0 +1,3 @@
+component_getFactory
+component_getImplementationEnvironment
+component_writeInfo
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.cxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.cxx
new file mode 100644
index 000000000000..09316e0a7d8b
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.cxx
@@ -0,0 +1,365 @@
+/*************************************************************************
+ *
+ * $RCSfile: hprophelp.cxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:02:06 $
+ *
+ * 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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#include <linguistic/misc.hxx>
+
+#include "hprophelp.hxx"
+#include <linguistic/lngprops.hxx>
+
+#ifndef _TOOLS_DEBUG_HXX //autogen wg. DBG_ASSERT
+#include <tools/debug.hxx>
+#endif
+
+#include <com/sun/star/linguistic2/LinguServiceEvent.hpp>
+#include <com/sun/star/linguistic2/LinguServiceEventFlags.hpp>
+#include <com/sun/star/linguistic2/XLinguServiceEventListener.hpp>
+
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _OSL_MUTEX_HXX_
+#include <osl/mutex.hxx>
+#endif
+
+//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;
+
+
+#define A2OU(x) ::rtl::OUString::createFromAscii( x )
+
+///////////////////////////////////////////////////////////////////////////
+
+
+PropertyChgHelper::PropertyChgHelper(
+ const Reference< XInterface > & rxSource,
+ Reference< XPropertySet > &rxPropSet,
+ const char *pPropNames[], USHORT nPropCount ) :
+ xMyEvtObj (rxSource),
+ xPropSet (rxPropSet),
+ aPropNames (nPropCount),
+ aLngSvcEvtListeners (GetLinguMutex())
+{
+ OUString *pName = aPropNames.getArray();
+ for (INT32 i = 0; i < nPropCount; ++i)
+ {
+ pName[i] = A2OU( pPropNames[i] );
+ }
+}
+
+
+PropertyChgHelper::PropertyChgHelper( const PropertyChgHelper &rHelper ) :
+ aLngSvcEvtListeners (GetLinguMutex())
+{
+ xPropSet = rHelper.xPropSet;
+ aPropNames = rHelper.aPropNames;
+ AddAsPropListener();
+
+ xMyEvtObj = rHelper.xMyEvtObj;
+}
+
+
+PropertyChgHelper::~PropertyChgHelper()
+{
+}
+
+
+void PropertyChgHelper::AddAsPropListener()
+{
+ if (xPropSet.is())
+ {
+ INT32 nLen = aPropNames.getLength();
+ const OUString *pPropName = aPropNames.getConstArray();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ if (pPropName[i].getLength())
+ xPropSet->addPropertyChangeListener( pPropName[i], this );
+ }
+ }
+}
+
+void PropertyChgHelper::RemoveAsPropListener()
+{
+ if (xPropSet.is())
+ {
+ INT32 nLen = aPropNames.getLength();
+ const OUString *pPropName = aPropNames.getConstArray();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ if (pPropName[i].getLength())
+ xPropSet->removePropertyChangeListener( pPropName[i], this );
+ }
+ }
+}
+
+
+void PropertyChgHelper::LaunchEvent( const LinguServiceEvent &rEvt )
+{
+ cppu::OInterfaceIteratorHelper aIt( aLngSvcEvtListeners );
+ while (aIt.hasMoreElements())
+ {
+ Reference< XLinguServiceEventListener > xRef( aIt.next(), UNO_QUERY );
+ if (xRef.is())
+ xRef->processLinguServiceEvent( rEvt );
+ }
+}
+
+
+void SAL_CALL PropertyChgHelper::disposing( const EventObject& rSource )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+ if (rSource.Source == xPropSet)
+ {
+ RemoveAsPropListener();
+ xPropSet = NULL;
+ aPropNames.realloc( 0 );
+ }
+}
+
+
+sal_Bool SAL_CALL
+ PropertyChgHelper::addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxListener )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ BOOL bRes = FALSE;
+ if (rxListener.is())
+ {
+ INT32 nCount = aLngSvcEvtListeners.getLength();
+ bRes = aLngSvcEvtListeners.addInterface( rxListener ) != nCount;
+ }
+ return bRes;
+}
+
+
+sal_Bool SAL_CALL
+ PropertyChgHelper::removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxListener )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ BOOL bRes = FALSE;
+ if (rxListener.is())
+ {
+ INT32 nCount = aLngSvcEvtListeners.getLength();
+ bRes = aLngSvcEvtListeners.removeInterface( rxListener ) != nCount;
+ }
+ return bRes;
+}
+
+///////////////////////////////////////////////////////////////////////////
+
+static const char *aSP[] =
+{
+ UPN_IS_GERMAN_PRE_REFORM,
+ UPN_IS_IGNORE_CONTROL_CHARACTERS,
+ UPN_IS_USE_DICTIONARY_LIST,
+};
+
+
+PropertyHelper_Hyphen::PropertyHelper_Hyphen(
+ const Reference< XInterface > & rxSource,
+ Reference< XPropertySet > &rxPropSet ) :
+ PropertyChgHelper ( rxSource, rxPropSet, aSP, sizeof(aSP) / sizeof(aSP[0]) )
+{
+ SetDefault();
+ INT32 nLen = GetPropNames().getLength();
+ if (rxPropSet.is() && nLen)
+ {
+ const OUString *pPropName = GetPropNames().getConstArray();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ BOOL *pbVal = NULL,
+ *pbResVal = NULL;
+
+ if (A2OU( UPN_IS_GERMAN_PRE_REFORM ) == pPropName[i])
+ {
+ pbVal = &bIsGermanPreReform;
+ pbResVal = &bResIsGermanPreReform;
+ }
+ else if (A2OU( UPN_IS_IGNORE_CONTROL_CHARACTERS ) == pPropName[i])
+ {
+ pbVal = &bIsIgnoreControlCharacters;
+ pbResVal = &bResIsIgnoreControlCharacters;
+ }
+ else if (A2OU( UPN_IS_USE_DICTIONARY_LIST ) == pPropName[i])
+ {
+ pbVal = &bIsUseDictionaryList;
+ pbResVal = &bResIsUseDictionaryList;
+ }
+ if (pbVal && pbResVal)
+ {
+ rxPropSet->getPropertyValue( pPropName[i] ) >>= *pbVal;
+ *pbResVal = *pbVal;
+ }
+ }
+ }
+}
+
+
+PropertyHelper_Hyphen::~PropertyHelper_Hyphen()
+{
+}
+
+
+void PropertyHelper_Hyphen::SetDefault()
+{
+ bResIsGermanPreReform = bIsGermanPreReform = FALSE;
+ bResIsIgnoreControlCharacters = bIsIgnoreControlCharacters = TRUE;
+ bResIsUseDictionaryList = bIsUseDictionaryList = TRUE;
+
+
+}
+
+
+void SAL_CALL
+ PropertyHelper_Hyphen::propertyChange( const PropertyChangeEvent& rEvt )
+ throw(RuntimeException)
+{
+ MutexGuard aGuard( GetLinguMutex() );
+
+ if (GetPropSet().is() && rEvt.Source == GetPropSet())
+ {
+ INT16 nLngSvcFlags = 0;
+ BOOL bSCWA = FALSE, // SPELL_CORRECT_WORDS_AGAIN ?
+ bSWWA = FALSE; // SPELL_WRONG_WORDS_AGAIN ?
+
+ BOOL *pbVal = NULL;
+ switch (rEvt.PropertyHandle)
+ {
+ case UPH_IS_IGNORE_CONTROL_CHARACTERS :
+ {
+ pbVal = &bIsIgnoreControlCharacters;
+ break;
+ }
+ case UPH_IS_GERMAN_PRE_REFORM :
+ {
+ pbVal = &bIsGermanPreReform;
+ bSCWA = bSWWA = TRUE;
+ break;
+ }
+ case UPH_IS_USE_DICTIONARY_LIST :
+ {
+ pbVal = &bIsUseDictionaryList;
+ bSCWA = bSWWA = TRUE;
+ break;
+ }
+ default:
+ DBG_ERROR( "unknown property" );
+ }
+ if (pbVal)
+ rEvt.NewValue >>= *pbVal;
+
+ if (bSCWA)
+ nLngSvcFlags |= LinguServiceEventFlags::SPELL_CORRECT_WORDS_AGAIN;
+ if (bSWWA)
+ nLngSvcFlags |= LinguServiceEventFlags::SPELL_WRONG_WORDS_AGAIN;
+ if (nLngSvcFlags)
+ {
+ LinguServiceEvent aEvt( GetEvtObj(), nLngSvcFlags );
+ LaunchEvent( aEvt );
+ }
+ }
+}
+
+
+void PropertyHelper_Hyphen::SetTmpPropVals( const PropertyValues &rPropVals )
+{
+ // set return value to default value unless there is an
+ // explicitly supplied temporary value
+ bResIsGermanPreReform = bIsGermanPreReform;
+ bResIsIgnoreControlCharacters = bIsIgnoreControlCharacters;
+ bResIsUseDictionaryList = bIsUseDictionaryList;
+
+ //
+ INT32 nLen = rPropVals.getLength();
+ if (nLen)
+ {
+ const PropertyValue *pVal = rPropVals.getConstArray();
+ for (INT32 i = 0; i < nLen; ++i)
+ {
+ BOOL *pbResVal = NULL;
+ switch (pVal[i].Handle)
+ {
+ case UPH_IS_GERMAN_PRE_REFORM : pbResVal = &bResIsGermanPreReform; break;
+ case UPH_IS_IGNORE_CONTROL_CHARACTERS : pbResVal = &bResIsIgnoreControlCharacters; break;
+ case UPH_IS_USE_DICTIONARY_LIST : pbResVal = &bResIsUseDictionaryList; break;
+ default:
+ DBG_ERROR( "unknown property" );
+ }
+ if (pbResVal)
+ pVal[i].Value >>= *pbResVal;
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.hxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.hxx
new file mode 100644
index 000000000000..f5f7593675e5
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hprophelp.hxx
@@ -0,0 +1,206 @@
+/*************************************************************************
+ *
+ * $RCSfile: hprophelp.hxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:02:06 $
+ *
+ * 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 _LINGU2_PROPHELP_HXX_
+#define _LINGU2_PROPHELP_HXX_
+
+#include <tools/solar.h>
+
+#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
+#include <cppuhelper/implbase2.hxx> // helper for implementations
+
+#ifndef _CPPUHELPER_INTERFACECONTAINER_H_
+#include <cppuhelper/interfacecontainer.h>
+#endif
+
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYCHANGELISTENER_HPP_
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUES_HPP_
+#include <com/sun/star/beans/PropertyValues.hpp>
+#endif
+
+#include <com/sun/star/linguistic2/XLinguServiceEventBroadcaster.hpp>
+
+namespace com { namespace sun { namespace star { namespace beans {
+ class XPropertySet;
+}}}};
+
+namespace com { namespace sun { namespace star { namespace linguistic2 {
+ struct LinguServiceEvent;
+}}}};
+
+
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::linguistic2;
+
+///////////////////////////////////////////////////////////////////////////
+// PropertyChgHelper
+// virtual base class for all XPropertyChangeListener members of the
+// various lingu services.
+// Only propertyChange needs to be implemented.
+
+class PropertyChgHelper :
+ public cppu::WeakImplHelper2
+ <
+ XPropertyChangeListener,
+ XLinguServiceEventBroadcaster
+ >
+{
+ Sequence< OUString > aPropNames;
+ Reference< XInterface > xMyEvtObj;
+ ::cppu::OInterfaceContainerHelper aLngSvcEvtListeners;
+ Reference< XPropertySet > xPropSet;
+
+ // disallow use of copy-constructor and assignment-operator
+ PropertyChgHelper( const PropertyChgHelper & );
+ PropertyChgHelper & operator = ( const PropertyChgHelper & );
+
+public:
+ PropertyChgHelper(
+ const Reference< XInterface > &rxSource,
+ Reference< XPropertySet > &rxPropSet,
+ const char *pPropNames[], USHORT nPropCount );
+ virtual ~PropertyChgHelper();
+
+ // XEventListener
+ virtual void SAL_CALL
+ disposing( const EventObject& rSource )
+ throw(RuntimeException);
+
+ // XPropertyChangeListener
+ virtual void SAL_CALL
+ propertyChange( const PropertyChangeEvent& rEvt )
+ throw(RuntimeException) = 0;
+
+ // XLinguServiceEventBroadcaster
+ virtual sal_Bool SAL_CALL
+ addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxListener )
+ throw(RuntimeException);
+ virtual sal_Bool SAL_CALL
+ removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxListener )
+ throw(RuntimeException);
+
+ // non UNO functions
+ void AddAsPropListener();
+ void RemoveAsPropListener();
+ void LaunchEvent( const LinguServiceEvent& rEvt );
+
+ const Sequence< OUString > &
+ GetPropNames() const { return aPropNames; }
+ const Reference< XPropertySet > &
+ GetPropSet() const { return xPropSet; }
+ const Reference< XInterface > &
+ GetEvtObj() const { return xMyEvtObj; }
+
+};
+
+
+///////////////////////////////////////////////////////////////////////////
+
+
+class PropertyHelper_Hyphen :
+ public PropertyChgHelper
+{
+ // default values
+ BOOL bIsGermanPreReform;
+ BOOL bIsIgnoreControlCharacters;
+ BOOL bIsUseDictionaryList;
+
+ // return values, will be set to default value or current temporary value
+ BOOL bResIsGermanPreReform;
+ BOOL bResIsIgnoreControlCharacters;
+ BOOL bResIsUseDictionaryList;
+
+ // disallow use of copy-constructor and assignment-operator
+ PropertyHelper_Hyphen( const PropertyHelper_Hyphen & );
+ PropertyHelper_Hyphen & operator = ( const PropertyHelper_Hyphen & );
+
+ void SetDefault();
+
+public:
+ PropertyHelper_Hyphen(
+ const Reference< XInterface > &rxSource,
+ Reference< XPropertySet > &rxPropSet );
+ virtual ~PropertyHelper_Hyphen();
+
+ // XPropertyChangeListener
+ virtual void SAL_CALL
+ propertyChange( const PropertyChangeEvent& rEvt )
+ throw(RuntimeException);
+
+ void SetTmpPropVals( const PropertyValues &rPropVals );
+
+ BOOL IsGermanPreReform() const { return bResIsGermanPreReform; }
+ BOOL IsIgnoreControlCharacters() const { return bResIsIgnoreControlCharacters; }
+ BOOL IsUseDictionaryList() const { return bResIsUseDictionaryList; }
+};
+
+///////////////////////////////////////////////////////////////////////////
+
+#endif
+
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx
new file mode 100644
index 000000000000..bc19274b974e
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hreg.cxx
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
+ * $RCSfile: hreg.cxx,v $
+ *
+ * $Revision: 1.3 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:02:07 $
+ *
+ * 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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+
+#include <cppuhelper/factory.hxx> // helper for factories
+#ifndef _RTL_STRING_HXX_
+#include <rtl/string.hxx>
+#endif
+
+#include <com/sun/star/registry/XRegistryKey.hpp>
+
+using namespace com::sun::star::lang;
+using namespace com::sun::star::registry;
+
+////////////////////////////////////////
+// declaration of external RegEntry-functions defined by the service objects
+//
+
+extern sal_Bool SAL_CALL Hyphenator_writeInfo(
+ void * /*pServiceManager*/, XRegistryKey * pRegistryKey );
+
+extern void * SAL_CALL Hyphenator_getFactory(
+ const sal_Char * pImplName,
+ XMultiServiceFactory * pServiceManager,
+ void * /*pRegistryKey*/ );
+
+////////////////////////////////////////
+// definition of the two functions that are used to provide the services
+//
+
+extern "C"
+{
+
+sal_Bool SAL_CALL component_writeInfo(
+ void * pServiceManager, XRegistryKey * pRegistryKey )
+{
+ return Hyphenator_writeInfo( pServiceManager, pRegistryKey );
+}
+
+void SAL_CALL component_getImplementationEnvironment(
+ const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv )
+{
+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
+}
+
+void * SAL_CALL component_getFactory(
+ const sal_Char * pImplName, void * pServiceManager, void * pRegistryKey )
+{
+ void * pRet = Hyphenator_getFactory(
+ pImplName,
+ reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
+ pRegistryKey );
+
+ return pRet;
+}
+
+}
+
+///////////////////////////////////////////////////////////////////////////
+
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphen.map b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphen.map
new file mode 100644
index 000000000000..1cc0ac1898a8
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphen.map
@@ -0,0 +1,8 @@
+LTH_1_0 {
+ global:
+ component_getFactory;
+ component_getImplementationEnvironment;
+ component_writeInfo;
+ local:
+ *;
+};
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx
new file mode 100644
index 000000000000..d8cd6531f859
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx
@@ -0,0 +1,792 @@
+/*************************************************************************
+ *
+ * $RCSfile: hyphenimp.cxx,v $
+ *
+ * $Revision: 1.7 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:02:08 $
+ *
+ * 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;
+}
+
+
+///////////////////////////////////////////////////////////////////////////
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx
new file mode 100644
index 000000000000..028e96dba84e
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.hxx
@@ -0,0 +1,250 @@
+/*************************************************************************
+ *
+ * $RCSfile: hyphenimp.hxx,v $
+ *
+ * $Revision: 1.4 $
+ *
+ * last change: $Author: hr $ $Date: 2003-03-26 13:02:08 $
+ *
+ * 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 _LINGU2_HYPHENIMP_HXX_
+#define _LINGU2_HYPHENIMP_HXX_
+
+#include <uno/lbnames.h> // CPPU_CURRENT_LANGUAGE_BINDING_NAME macro, which specify the environment type
+#include <cppuhelper/implbase1.hxx> // helper for implementations
+#include <cppuhelper/implbase6.hxx> // helper for implementations
+
+#ifndef _COM_SUN_STAR_LANG_XCOMPONENT_HPP_
+#include <com/sun/star/lang/XComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_
+#include <com/sun/star/lang/XInitialization.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEDISPLAYNAME_HPP_
+#include <com/sun/star/lang/XServiceDisplayName.hpp>
+#endif
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/beans/PropertyValues.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/linguistic2/XHyphenator.hpp>
+#include <com/sun/star/linguistic2/XSearchableDictionaryList.hpp>
+#include <com/sun/star/linguistic2/XLinguServiceEventBroadcaster.hpp>
+
+#ifndef _TOOLS_TABLE_HXX
+#include <tools/table.hxx>
+#endif
+
+#include <linguistic/misc.hxx>
+#include "hprophelp.hxx"
+#include <stdio.h>
+using namespace ::rtl;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::linguistic2;
+
+
+#define A2OU(x) ::rtl::OUString::createFromAscii( x )
+
+#define OU2A(rtlOUString) ::rtl::OString((rtlOUString).getStr(), (rtlOUString).getLength(), RTL_TEXTENCODING_ASCII_US).getStr()
+
+#define OU2UTF8(rtlOUString) ::rtl::OString((rtlOUString).getStr(), (rtlOUString).getLength(), RTL_TEXTENCODING_UTF8).getStr()
+
+#define OU2ISO_1(rtlOUString) ::rtl::OString((rtlOUString).getStr(), (rtlOUString).getLength(), RTL_TEXTENCODING_ISO_8859_1).getStr()
+
+#define OU2ENC(rtlOUString, rtlEncoding) ::rtl::OString((rtlOUString).getStr(), (rtlOUString).getLength(), rtlEncoding).getStr()
+
+///////////////////////////////////////////////////////////////////////////
+
+
+struct HDInfo {
+ HyphenDict * aPtr;
+ OUString aName;
+ Locale aLoc;
+ rtl_TextEncoding aEnc;
+};
+
+
+
+class Hyphenator :
+ public cppu::WeakImplHelper6
+ <
+ XHyphenator,
+ XLinguServiceEventBroadcaster,
+ XInitialization,
+ XComponent,
+ XServiceInfo,
+ XServiceDisplayName
+ >
+{
+ Sequence< Locale > aSuppLocales;
+ HDInfo * aDicts;
+ sal_Int32 numdict;
+
+ ::cppu::OInterfaceContainerHelper aEvtListeners;
+ Reference< XPropertyChangeListener > xPropHelper;
+ Reference< XMultiServiceFactory > rSMgr;
+ PropertyHelper_Hyphen * pPropHelper;
+ BOOL bDisposing;
+
+ // disallow copy-constructor and assignment-operator for now
+ Hyphenator(const Hyphenator &);
+ Hyphenator & operator = (const Hyphenator &);
+
+ PropertyHelper_Hyphen & GetPropHelper_Impl();
+ PropertyHelper_Hyphen & GetPropHelper()
+ {
+ return pPropHelper ? *pPropHelper : GetPropHelper_Impl();
+ }
+
+public:
+ Hyphenator();
+
+ virtual ~Hyphenator();
+
+ // XSupportedLocales (for XHyphenator)
+ virtual Sequence< Locale > SAL_CALL getLocales()
+ throw(RuntimeException);
+ virtual sal_Bool SAL_CALL hasLocale( const Locale& rLocale )
+ throw(RuntimeException);
+
+ // XHyphenator
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XHyphenatedWord > SAL_CALL
+ 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::lang::IllegalArgumentException,
+ ::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XHyphenatedWord > SAL_CALL
+ 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);
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XPossibleHyphens > SAL_CALL
+ 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);
+
+ // XLinguServiceEventBroadcaster
+ virtual sal_Bool SAL_CALL
+ addLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
+ throw(RuntimeException);
+ virtual sal_Bool SAL_CALL
+ removeLinguServiceEventListener(
+ const Reference< XLinguServiceEventListener >& rxLstnr )
+ throw(RuntimeException);
+
+ // XServiceDisplayName
+ virtual OUString SAL_CALL
+ getServiceDisplayName( const Locale& rLocale )
+ throw(RuntimeException);
+
+ // XInitialization
+ virtual void SAL_CALL
+ initialize( const Sequence< Any >& rArguments )
+ throw(Exception, RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL
+ dispose()
+ throw(RuntimeException);
+ virtual void SAL_CALL
+ addEventListener( const Reference< XEventListener >& rxListener )
+ throw(RuntimeException);
+ virtual void SAL_CALL
+ removeEventListener( const Reference< XEventListener >& rxListener )
+ throw(RuntimeException);
+
+ ////////////////////////////////////////////////////////////
+ // Service specific part
+ //
+
+ // XServiceInfo
+ virtual OUString SAL_CALL
+ getImplementationName()
+ throw(RuntimeException);
+ virtual sal_Bool SAL_CALL
+ supportsService( const OUString& rServiceName )
+ throw(RuntimeException);
+ virtual Sequence< OUString > SAL_CALL
+ getSupportedServiceNames()
+ throw(RuntimeException);
+
+
+ static inline OUString
+ getImplementationName_Static() throw();
+ static Sequence< OUString >
+ getSupportedServiceNames_Static() throw();
+};
+
+inline OUString Hyphenator::getImplementationName_Static() throw()
+{
+ return A2OU( "org.openoffice.lingu.LibHnjHyphenator" );
+}
+
+
+///////////////////////////////////////////////////////////////////////////
+
+#endif
+
diff --git a/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk
new file mode 100644
index 000000000000..a0c26652fc45
--- /dev/null
+++ b/lingucomponent/source/hyphenator/altlinuxhyph/hyphen/makefile.mk
@@ -0,0 +1,180 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.6 $
+#
+# last change: $Author: hr $ $Date: 2003-03-26 13:02:08 $
+#
+# 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): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ = ..$/..$/..$/..
+
+PRJNAME = lingucomponent
+TARGET = hyphen
+ENABLE_EXCEPTIONS=TRUE
+USE_DEFFILE=TRUE
+
+.IF "$(GUI)"=="UNX"
+HNJLIB=-lhnj
+.ELSE
+HNJLIB=libhnj.lib
+.ENDIF
+
+.IF "$(ULINGULIB)"==""
+.IF "$(GUI)"=="UNX"
+ULINGULIB=-lulingu$(UPD)$(DLLPOSTFIX)
+.ENDIF # unx
+.IF "$(GUI)"=="WNT"
+ULINGULIB=$(LIBPRE) ulingu.lib
+.ENDIF # wnt
+.ENDIF
+
+
+
+#----- Settings ---------------------------------------------------------
+
+.INCLUDE : settings.mk
+
+# --- Files --------------------------------------------------------
+
+UNOUCRDEP= $(SOLARBINDIR)$/types.rdb
+UNOUCRRDB= $(SOLARBINDIR)$/types.rdb
+
+UNOTYPES=\
+ com.sun.star.linguistic2.DictionaryEvent\
+ com.sun.star.linguistic2.DictionaryEventFlags\
+ com.sun.star.linguistic2.DictionaryListEvent\
+ com.sun.star.linguistic2.DictionaryListEventFlags\
+ com.sun.star.linguistic2.DictionaryType\
+ com.sun.star.linguistic2.LinguServiceEventFlags\
+ com.sun.star.linguistic2.SpellFailure\
+ com.sun.star.linguistic2.XDictionary\
+ com.sun.star.linguistic2.XDictionary1\
+ com.sun.star.linguistic2.XDictionaryEntry\
+ com.sun.star.linguistic2.XDictionaryEventListener\
+ com.sun.star.linguistic2.XDictionaryList\
+ com.sun.star.linguistic2.XDictionaryListEventListener\
+ com.sun.star.linguistic2.XHyphenatedWord\
+ com.sun.star.linguistic2.XHyphenator\
+ com.sun.star.linguistic2.XLinguServiceEventBroadcaster\
+ com.sun.star.linguistic2.XLinguServiceEventListener\
+ com.sun.star.linguistic2.XLinguServiceManager\
+ com.sun.star.linguistic2.XMeaning\
+ com.sun.star.linguistic2.XPossibleHyphens\
+ com.sun.star.linguistic2.XSearchableDictionaryList\
+ com.sun.star.linguistic2.XSpellAlternatives\
+ com.sun.star.linguistic2.XSpellChecker\
+ com.sun.star.linguistic2.XSupportedLocales\
+ com.sun.star.linguistic2.XThesaurus
+
+CXXFLAGS += -I..$/libhnj -I..$/..$/..$/lingutil
+CFLAGSCXX += -I..$/libhnj -I..$/..$/..$/lingutil
+CFLAGSCC += -I..$/libhnj -I..$/..$/..$/lingutil
+
+.IF "$(header)" == ""
+
+EXCEPTIONSFILES= \
+ $(SLO)$/hprophelp.obj\
+ $(SLO)$/hyphenimp.obj
+
+SLOFILES= \
+ $(SLO)$/hprophelp.obj\
+ $(SLO)$/hreg.obj\
+ $(SLO)$/hyphenimp.obj
+
+
+SHL1TARGET= $(TARGET)$(UPD)$(DLLPOSTFIX)
+
+SHL1STDLIBS= \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB) \
+ $(UNOLIB) \
+ $(VOSLIB) \
+ $(TOOLSLIB) \
+ $(SVTOOLLIB) \
+ $(SVLLIB) \
+ $(VCLLIB) \
+ $(SFXLIB) \
+ $(SALLIB) \
+ $(UCBHELPERLIB) \
+ $(UNOTOOLSLIB) \
+ $(LNGLIB) \
+ $(HNJLIB) \
+ $(ULINGULIB)
+
+
+# build DLL
+SHL1LIBS= $(SLB)$/$(TARGET).lib
+SHL1IMPLIB= i$(TARGET)
+SHL1DEPN= $(SHL1LIBS)
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+.IF "$(OS)"!="MACOSX"
+SHL1VERSIONMAP= $(TARGET).map
+.ENDIF
+
+# build DEF file
+DEF1NAME =$(SHL1TARGET)
+#DEF1DEPN =$(MISC)$/$(SHL1TARGET).flt
+#DEFLIB1NAME =$(TARGET)
+#DEF1DES =Linguistic2 main DLL
+DEF1EXPORTFILE= exports.dxp
+
+.ENDIF
+
+# --- Targets ------------------------------------------------------
+
+.INCLUDE : target.mk
+