5b2cd79ade
create a plugin that finds methods we can mark as final because they are not override in subclasses. Which is useful both as documentation (telling you that you don't need to worry about subclasses changing the implementation under you), and for performance, letting the compiler elide virtual calls in many cases. Apply the results to a subset of stuff in /include Change-Id: I7b5cc893ec2f343bc356bfc338e4cf531ffba1e0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165054 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
196 lines
7.2 KiB
C++
196 lines
7.2 KiB
C++
/* -*- 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 .
|
|
*/
|
|
|
|
#ifndef INCLUDED_LINGUISTIC_MISC_HXX
|
|
#define INCLUDED_LINGUISTIC_MISC_HXX
|
|
|
|
#include <com/sun/star/uno/Sequence.h>
|
|
#include <com/sun/star/uno/Reference.h>
|
|
#include <com/sun/star/beans/PropertyValues.hpp>
|
|
#include <com/sun/star/frame/XTerminateListener.hpp>
|
|
#include <com/sun/star/lang/Locale.hpp>
|
|
|
|
#include <cppuhelper/implbase.hxx>
|
|
#include <i18nlangtag/lang.h>
|
|
#include <rtl/ustring.hxx>
|
|
#include <linguistic/lngdllapi.h>
|
|
|
|
#include <vector>
|
|
|
|
namespace com::sun::star::beans { class XPropertySet; }
|
|
namespace com::sun::star::frame { class XDesktop2; }
|
|
namespace com::sun::star::linguistic2 { class XDictionary; }
|
|
namespace com::sun::star::linguistic2 { class XDictionaryEntry; }
|
|
namespace com::sun::star::linguistic2 { class XHyphenatedWord; }
|
|
namespace com::sun::star::linguistic2 { class XLinguProperties; }
|
|
namespace com::sun::star::linguistic2 { class XSearchableDictionaryList; }
|
|
namespace osl { class Mutex; }
|
|
|
|
class CharClass;
|
|
class LocaleDataWrapper;
|
|
|
|
|
|
inline constexpr OUString SN_GRAMMARCHECKER = u"com.sun.star.linguistic2.Proofreader"_ustr;
|
|
inline constexpr OUString SN_SPELLCHECKER = u"com.sun.star.linguistic2.SpellChecker"_ustr;
|
|
inline constexpr OUString SN_HYPHENATOR = u"com.sun.star.linguistic2.Hyphenator"_ustr;
|
|
inline constexpr OUString SN_THESAURUS = u"com.sun.star.linguistic2.Thesaurus"_ustr;
|
|
|
|
|
|
namespace linguistic
|
|
{
|
|
|
|
|
|
// AddEntryToDic return values
|
|
enum class DictionaryError
|
|
{
|
|
NONE, FULL, READONLY, UNKNOWN, NOT_EXISTS
|
|
};
|
|
|
|
// values assigned to capitalization types
|
|
enum class CapType
|
|
{
|
|
UNKNOWN,
|
|
NOCAP,
|
|
INITCAP,
|
|
ALLCAP,
|
|
MIXED
|
|
};
|
|
|
|
LNG_DLLPUBLIC ::osl::Mutex& GetLinguMutex();
|
|
|
|
const LocaleDataWrapper & GetLocaleDataWrapper( LanguageType nLang );
|
|
|
|
sal_Int32 LevDistance( std::u16string_view rTxt1, std::u16string_view rTxt2 );
|
|
|
|
/** Convert Locale to LanguageType for legacy handling.
|
|
Linguistic specific handling of an empty locale denoting LANGUAGE_NONE.
|
|
Does not resolve empty locale as system locale.
|
|
*/
|
|
LNG_DLLPUBLIC LanguageType LinguLocaleToLanguage( const css::lang::Locale& rLocale );
|
|
|
|
/** Convert LanguageType to Locale for legacy handling.
|
|
Linguistic specific handling of LANGUAGE_NONE resulting in an empty locale.
|
|
Avoid use!
|
|
*/
|
|
LNG_DLLPUBLIC css::lang::Locale LinguLanguageToLocale( LanguageType nLanguage );
|
|
|
|
/** Checks if a LanguageType is one of the values that denote absence of
|
|
language or undetermined language or multiple languages, in short all
|
|
values used in linguistic context that do not denote a specific language.
|
|
*/
|
|
LNG_DLLPUBLIC bool LinguIsUnspecified( LanguageType nLanguage );
|
|
|
|
/** The same as LinguIsUnspecified(LanguageType) but taking a BCP 47 language
|
|
tag string instead. */
|
|
LNG_DLLPUBLIC bool LinguIsUnspecified( std::u16string_view rBcp47 );
|
|
|
|
std::vector< LanguageType >
|
|
LocaleSeqToLangVec( css::uno::Sequence< css::lang::Locale > const &rLocaleSeq );
|
|
css::uno::Sequence<sal_Int16>
|
|
LocaleSeqToLangSeq( css::uno::Sequence< css::lang::Locale > const &rLocaleSeq );
|
|
|
|
// checks if file pointed to by rURL is readonly
|
|
// and may also check return if such a file exists or not
|
|
bool IsReadOnly( const OUString &rURL, bool *pbExist = nullptr );
|
|
|
|
// checks if a file with the given URL exists
|
|
bool FileExists( const OUString &rURL );
|
|
|
|
|
|
OUString GetDictionaryWriteablePath();
|
|
std::vector< OUString > GetDictionaryPaths();
|
|
|
|
/// @returns a URL for a new and writable dictionary rDicName.
|
|
/// The URL will point to the path given by 'GetDictionaryWriteablePath'
|
|
LNG_DLLPUBLIC OUString GetWritableDictionaryURL( std::u16string_view rDicName );
|
|
|
|
LNG_DLLPUBLIC sal_Int32 GetPosInWordToCheck( std::u16string_view rTxt, sal_Int32 nPos );
|
|
|
|
css::uno::Reference< css::linguistic2::XHyphenatedWord >
|
|
RebuildHyphensAndControlChars(
|
|
const OUString &rOrigWord,
|
|
css::uno::Reference< css::linguistic2::XHyphenatedWord > const &rxHyphWord );
|
|
|
|
|
|
LNG_DLLPUBLIC bool IsUpper( const OUString &rText, sal_Int32 nPos, sal_Int32 nLen, LanguageType nLanguage );
|
|
|
|
inline bool IsUpper( const OUString &rText, LanguageType nLanguage ) { return IsUpper( rText, 0, rText.getLength(), nLanguage ); }
|
|
LNG_DLLPUBLIC CapType capitalType(const OUString&, CharClass const *);
|
|
|
|
LNG_DLLPUBLIC bool HasDigits( std::u16string_view rText );
|
|
LNG_DLLPUBLIC bool IsNumeric( std::u16string_view rText );
|
|
|
|
|
|
LNG_DLLPUBLIC css::uno::Reference< css::linguistic2::XLinguProperties > GetLinguProperties();
|
|
css::uno::Reference< css::linguistic2::XSearchableDictionaryList > GetDictionaryList();
|
|
css::uno::Reference< css::linguistic2::XDictionary > GetIgnoreAllList();
|
|
|
|
|
|
bool IsUseDicList( const css::beans::PropertyValues &rProperties,
|
|
const css::uno::Reference< css::beans::XPropertySet > &rxPropSet );
|
|
|
|
bool IsIgnoreControlChars( const css::beans::PropertyValues &rProperties,
|
|
const css::uno::Reference< css::beans::XPropertySet > &rxPropSet );
|
|
|
|
css::uno::Reference<
|
|
css::linguistic2::XDictionaryEntry >
|
|
SearchDicList(
|
|
const css::uno::Reference< css::linguistic2::XSearchableDictionaryList >& rDicList,
|
|
const OUString& rWord, LanguageType nLanguage,
|
|
bool bSearchPosDics, bool bSearchSpellEntry );
|
|
|
|
LNG_DLLPUBLIC DictionaryError AddEntryToDic(
|
|
css::uno::Reference< css::linguistic2::XDictionary > const &rxDic,
|
|
const OUString &rWord, bool bIsNeg,
|
|
const OUString &rRplcTxt,
|
|
bool bStripDot = true );
|
|
|
|
LNG_DLLPUBLIC bool SaveDictionaries( const css::uno::Reference< css::linguistic2::XSearchableDictionaryList > &xDicList );
|
|
|
|
// AppExitLstnr:
|
|
// virtual base class that calls it AtExit function when the application
|
|
// (ie the Desktop) is about to terminate
|
|
|
|
class AppExitListener :
|
|
public cppu::WeakImplHelper< css::frame::XTerminateListener >
|
|
{
|
|
css::uno::Reference< css::frame::XDesktop2 > xDesktop;
|
|
|
|
public:
|
|
AppExitListener();
|
|
virtual ~AppExitListener() override;
|
|
|
|
virtual void AtExit() = 0;
|
|
|
|
void Activate();
|
|
void Deactivate();
|
|
|
|
// XEventListener
|
|
virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override final;
|
|
|
|
// XTerminateListener
|
|
virtual void SAL_CALL queryTermination( const css::lang::EventObject& aEvent ) override final;
|
|
virtual void SAL_CALL notifyTermination( const css::lang::EventObject& aEvent ) override final;
|
|
};
|
|
|
|
} // namespace linguistic
|
|
|
|
#endif
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|