/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- *//* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 . */#include <assert.h>#include <com/sun/star/lang/NoSupportException.hpp>#include <cppuhelper/supportsservice.hxx>#include <textconversionImpl.hxx>#include <localedata.hxx>usingnamespacecom::sun::star::lang;usingnamespace::com::sun::star::i18n;usingnamespacecom::sun::star::uno;namespacei18npool{TextConversionResultSAL_CALLTextConversionImpl::getConversions(constOUString&aText,sal_Int32nStartPos,sal_Int32nLength,constLocale&rLocale,sal_Int16nConversionType,sal_Int32nConversionOptions){getLocaleSpecificTextConversion(rLocale);sal_Int32len=aText.getLength()-nStartPos;if(nLength>len)nLength=std::max<sal_Int32>(len,0);returnxTC->getConversions(aText,nStartPos,nLength,rLocale,nConversionType,nConversionOptions);}OUStringSAL_CALLTextConversionImpl::getConversion(constOUString&aText,sal_Int32nStartPos,sal_Int32nLength,constLocale&rLocale,sal_Int16nConversionType,sal_Int32nConversionOptions){getLocaleSpecificTextConversion(rLocale);sal_Int32len=aText.getLength()-nStartPos;if(nLength>len)nLength=std::max<sal_Int32>(len,0);returnxTC->getConversion(aText,nStartPos,nLength,rLocale,nConversionType,nConversionOptions);}OUStringSAL_CALLTextConversionImpl::getConversionWithOffset(constOUString&aText,sal_Int32nStartPos,sal_Int32nLength,constLocale&rLocale,sal_Int16nConversionType,sal_Int32nConversionOptions,Sequence<sal_Int32>&offset){getLocaleSpecificTextConversion(rLocale);sal_Int32len=aText.getLength()-nStartPos;if(nLength>len)nLength=std::max<sal_Int32>(len,0);returnxTC->getConversionWithOffset(aText,nStartPos,nLength,rLocale,nConversionType,nConversionOptions,offset);}sal_BoolSAL_CALLTextConversionImpl::interactiveConversion(constLocale&rLocale,sal_Int16nTextConversionType,sal_Int32nTextConversionOptions){getLocaleSpecificTextConversion(rLocale);returnxTC->interactiveConversion(rLocale,nTextConversionType,nTextConversionOptions);}voidTextConversionImpl::getLocaleSpecificTextConversion(constLocale&rLocale){if(rLocale!=aLocale){aLocale=rLocale;OUStringaPrefix("com.sun.star.i18n.TextConversion_");Reference<XInterface>xI;xI=m_xContext->getServiceManager()->createInstanceWithContext(aPrefix+LocaleDataImpl::getFirstLocaleServiceName(aLocale),m_xContext);if(!xI.is()){::std::vector<OUString>aFallbacks(LocaleDataImpl::getFallbackLocaleServiceNames(aLocale));for(autoconst&fallback:aFallbacks){xI=m_xContext->getServiceManager()->createInstanceWithContext(aPrefix+fallback,m_xContext);if(xI.is())break;}}if(xI.is())xTC.set(xI,UNO_QUERY);elseif(xTC.is())xTC.clear();}if(!xTC.is())throwNoSupportException();// aLocale is not supported}OUStringSAL_CALLTextConversionImpl::getImplementationName(){returnOUString("com.sun.star.i18n.TextConversion");}sal_BoolSAL_CALLTextConversionImpl::supportsService(constOUString&rServiceName){returncppu::supportsService(this,rServiceName);}Sequence<OUString>SAL_CALLTextConversionImpl::getSupportedServiceNames(){Sequence<OUString>aRet{"com.sun.star.i18n.TextConversion"};returnaRet;}}extern"C"SAL_DLLPUBLIC_EXPORTcss::uno::XInterface*com_sun_star_i18n_TextConversion_get_implementation(<--- The function 'com_sun_star_i18n_TextConversion_get_implementation' is never used.css::uno::XComponentContext*context,css::uno::Sequence<css::uno::Any>const&){returncppu::acquire(newi18npool::TextConversionImpl(context));}/* vim:set shiftwidth=4 softtabstop=4 expandtab: */