diff options
-rw-r--r-- | comphelper/IwyuFilter_comphelper.yaml | 3 | ||||
-rw-r--r-- | comphelper/Library_comphelper.mk | 1 | ||||
-rw-r--r-- | comphelper/source/misc/servicedecl.cxx | 161 | ||||
-rw-r--r-- | include/IwyuFilter_include.yaml | 4 | ||||
-rw-r--r-- | include/comphelper/servicedecl.hxx | 155 | ||||
-rw-r--r-- | solenv/clang-format/excludelist | 2 |
6 files changed, 0 insertions, 326 deletions
diff --git a/comphelper/IwyuFilter_comphelper.yaml b/comphelper/IwyuFilter_comphelper.yaml index 3e22a187b7e5..9e60203c6750 100644 --- a/comphelper/IwyuFilter_comphelper.yaml +++ b/comphelper/IwyuFilter_comphelper.yaml @@ -68,9 +68,6 @@ excludelist: # Stop warnings about include/ - com/sun/star/beans/PropertyValue.hpp - com/sun/star/beans/NamedValue.hpp - include/comphelper/servicedecl.hxx: - # Stop warnings about include/ - - com/sun/star/uno/XComponentContext.hpp comphelper/source/misc/simplefileaccessinteraction.cxx: # Needed for UnoType template - com/sun/star/task/XInteractionAbort.hpp diff --git a/comphelper/Library_comphelper.mk b/comphelper/Library_comphelper.mk index f75dc446cdd2..d03dc06dd67f 100644 --- a/comphelper/Library_comphelper.mk +++ b/comphelper/Library_comphelper.mk @@ -124,7 +124,6 @@ $(eval $(call gb_Library_add_exception_objects,comphelper,\ comphelper/source/misc/random \ comphelper/source/misc/SelectionMultiplex \ comphelper/source/misc/sequenceashashmap \ - comphelper/source/misc/servicedecl \ comphelper/source/misc/sharedmutex \ comphelper/source/misc/simplefileaccessinteraction \ comphelper/source/misc/solarmutex \ diff --git a/comphelper/source/misc/servicedecl.cxx b/comphelper/source/misc/servicedecl.cxx deleted file mode 100644 index 2b16539d1a55..000000000000 --- a/comphelper/source/misc/servicedecl.cxx +++ /dev/null @@ -1,161 +0,0 @@ -/* -*- 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 <comphelper/servicedecl.hxx> -#include <o3tl/string_view.hxx> -#include <rtl/string.hxx> -#include <cppuhelper/implbase.hxx> -#include <comphelper/sequence.hxx> -#include <com/sun/star/lang/XSingleComponentFactory.hpp> -#include <cassert> -#include <vector> - -using namespace com::sun::star; - -namespace comphelper::service_decl { - -const char cDelim = ';'; - -class ServiceDecl::Factory : - public cppu::WeakImplHelper<lang::XSingleComponentFactory, - lang::XServiceInfo> -{ -public: - explicit Factory( ServiceDecl const& rServiceDecl ) - : m_rServiceDecl(rServiceDecl) {} - // noncopyable - Factory(const Factory&) = delete; - const Factory& operator=(const Factory&) = delete; - - // XServiceInfo: - virtual OUString SAL_CALL getImplementationName() override; - virtual sal_Bool SAL_CALL supportsService( OUString const& name ) override; - virtual uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override; - // XSingleComponentFactory: - virtual uno::Reference<uno::XInterface> SAL_CALL createInstanceWithContext( - uno::Reference<uno::XComponentContext> const& xContext ) override; - virtual uno::Reference<uno::XInterface> SAL_CALL - createInstanceWithArgumentsAndContext( - uno::Sequence<uno::Any> const& args, - uno::Reference<uno::XComponentContext> const& xContext ) override; - -private: - virtual ~Factory() override; - - ServiceDecl const& m_rServiceDecl; -}; - -ServiceDecl::Factory::~Factory() -{ -} - -// XServiceInfo: -OUString ServiceDecl::Factory::getImplementationName() -{ - return m_rServiceDecl.getImplementationName(); -} - -sal_Bool ServiceDecl::Factory::supportsService( OUString const& name ) -{ - return m_rServiceDecl.supportsService(name); -} - -uno::Sequence<OUString> ServiceDecl::Factory::getSupportedServiceNames() -{ - return m_rServiceDecl.getSupportedServiceNames(); -} - -// XSingleComponentFactory: -uno::Reference<uno::XInterface> ServiceDecl::Factory::createInstanceWithContext( - uno::Reference<uno::XComponentContext> const& xContext ) -{ - return m_rServiceDecl.m_createFunc( - m_rServiceDecl, uno::Sequence<uno::Any>(), xContext ); -} - -uno::Reference<uno::XInterface> -ServiceDecl::Factory::createInstanceWithArgumentsAndContext( - uno::Sequence<uno::Any > const& args, - uno::Reference<uno::XComponentContext> const& xContext ) -{ - return m_rServiceDecl.m_createFunc( - m_rServiceDecl, args, xContext ); -} - -void * ServiceDecl::getFactory( char const* pImplName ) const -{ - if (rtl_str_compare(m_pImplName, pImplName) == 0) { - lang::XSingleComponentFactory * const pFac( new Factory(*this) ); - pFac->acquire(); - return pFac; - } - return nullptr; -} - -uno::Sequence<OUString> ServiceDecl::getSupportedServiceNames() const -{ - std::vector<OUString> vec; - - OString const str(m_pServiceNames); - sal_Int32 nIndex = 0; - do { - std::string_view const token( o3tl::getToken(str, 0, cDelim, nIndex ) ); - vec.emplace_back( token.data(), token.size(), - RTL_TEXTENCODING_ASCII_US ); - } - while (nIndex >= 0); - - return comphelper::containerToSequence(vec); -} - -bool ServiceDecl::supportsService( std::u16string_view name ) const -{ - OString const str(m_pServiceNames); - sal_Int32 nIndex = 0; - do { - std::string_view const token( o3tl::getToken(str, 0, cDelim, nIndex ) ); - if (o3tl::equalsAscii(name, token)) - return true; - } - while (nIndex >= 0); - return false; -} - -OUString ServiceDecl::getImplementationName() const -{ - return OUString::createFromAscii(m_pImplName); -} - -void* component_getFactoryHelper( const char* pImplName, - std::initializer_list<ServiceDecl const *> args ) -{ - for (auto const i: args) { - assert(i != nullptr); - void * fac = i->getFactory(pImplName); - if (fac != nullptr) { - return fac; - } - } - return nullptr; -} - -} // namespace - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/IwyuFilter_include.yaml b/include/IwyuFilter_include.yaml index 9fce4b214568..7a225d3b9488 100644 --- a/include/IwyuFilter_include.yaml +++ b/include/IwyuFilter_include.yaml @@ -193,10 +193,6 @@ excludelist: # base class has to be a complete type - com/sun/star/io/XInputStream.hpp - com/sun/star/io/XSeekable.hpp - include/comphelper/servicedecl.hxx: - # base class has to be a complete type - - com/sun/star/lang/XServiceInfo.hpp - - com/sun/star/uno/XComponentContext.hpp include/comphelper/servicehelper.hxx: # Needed for macro - rtl/instance.hxx diff --git a/include/comphelper/servicedecl.hxx b/include/comphelper/servicedecl.hxx deleted file mode 100644 index 57da446e68b5..000000000000 --- a/include/comphelper/servicedecl.hxx +++ /dev/null @@ -1,155 +0,0 @@ -/* -*- 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_COMPHELPER_SERVICEDECL_HXX -#define INCLUDED_COMPHELPER_SERVICEDECL_HXX - -#include <comphelper/comphelperdllapi.h> -#include <com/sun/star/uno/XComponentContext.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> - -#include <functional> -#include <initializer_list> - -namespace comphelper::service_decl { - -class ServiceDecl; - -namespace detail { -typedef ::std::function< - css::uno::Reference<css::uno::XInterface> /* return */ - (ServiceDecl const&, - css::uno::Sequence<css::uno::Any> const&, - css::uno::Reference<css::uno::XComponentContext> const&)> CreateFuncF; -} - -/** Class to declare a service implementation. There is no need to implement - lang::XServiceInfo nor lang::XInitialization anymore. - The declaration can be done in various ways, the (simplest) form is - - <pre> - class MyClass : public cppu::WeakImplHelper<XInterface1, XInterface2> { - public: - MyClass( uno::Reference<uno::XComponentContext> const& xContext ) - [...] - }; - [...] - namespace sdecl = comphelper::service_decl; - sdecl::ServiceDecl const myDecl( - sdecl::class_<MyClass>(), - "my.unique.implementation.name", - "MyServiceSpec1;MyServiceSpec2" ); - </pre> - - If the service demands initialization by arguments, the implementation - class has to define a constructor taking both arguments and component - context: - - <pre> - class MyClass : public cppu::WeakImplHelper<XInterface1, XInterface2> { - public: - MyClass( uno::Sequence<uno::Any> const& args, - uno::Reference<uno:XComponentContext> const& xContext ) - [...] - }; - [...] - namespace sdecl = comphelper::service_decl; - sdecl::ServiceDecl const myDecl( - sdecl::class_<MyClass, sdecl::with_args<true> >(), - "my.unique.implementation.name", - "MyServiceSpec1;MyServiceSpec2" ); - </pre> - - Additionally, there is the possibility to process some code after creation, - e.g. to add the newly created object as a listener or perform aggregation - (C++-UNO only): - - <pre> - uno::Reference<uno::XInterface> somePostProcCode( MyClass * p ); - [...] - namespace sdecl = comphelper::service_decl; - sdecl::ServiceDecl const myDecl( - sdecl::class_<MyClass, ... >(&somePostProcCode), - "my.unique.implementation.name", - "MyServiceSpec1;MyServiceSpec2" ); - </pre> - - In the latter case, somePostProcCode gets the yet unacquired "raw" pointer. -*/ -class COMPHELPER_DLLPUBLIC ServiceDecl -{ -public: - /** Ctor for multiple supported service names. - - @param implClass implementation class description - @param pImplName implementation name - @param pSupportedServiceNames supported service names - @param cDelim delimiter for supported service names - */ - ServiceDecl( const ServiceDecl& ) = delete; - ServiceDecl& operator=( const ServiceDecl& ) = delete; - template <typename ImplClassT> - ServiceDecl( ImplClassT const& implClass, - char const* pImplName, - char const* pSupportedServiceNames ) - : m_createFunc(implClass.m_createFunc), - m_pImplName(pImplName), - m_pServiceNames(pSupportedServiceNames) {} - - /// @internal gets called by component_getFactoryHelper() - void * getFactory( char const* pImplName ) const; - - /// @return supported service names - css::uno::Sequence< OUString> getSupportedServiceNames() const; - - /// @return whether name is in set of supported service names - bool supportsService( std::u16string_view name ) const; - - /// @return implementation name - OUString getImplementationName() const; - -private: - class Factory; - friend class Factory; - - detail::CreateFuncF const m_createFunc; - char const* const m_pImplName; - char const* const m_pServiceNames; -}; - -/** To specify whether the implementation class expects arguments - (uno::Sequence<uno::Any>). -*/ -template <bool> struct with_args; - -/// @internal -namespace detail { - -} // namespace detail - - -COMPHELPER_DLLPUBLIC -void* component_getFactoryHelper( const char* pImplName, - std::initializer_list<ServiceDecl const *> args ); - -} // namespace comphelper::service_decl - - -#endif // ! defined( INCLUDED_COMPHELPER_SERVICEDECL_HXX) - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist index a4f04ad0c9e7..e2b36b03a9c3 100644 --- a/solenv/clang-format/excludelist +++ b/solenv/clang-format/excludelist @@ -1390,7 +1390,6 @@ comphelper/source/misc/officerestartmanager.cxx comphelper/source/misc/officerestartmanager.hxx comphelper/source/misc/proxyaggregation.cxx comphelper/source/misc/sequenceashashmap.cxx -comphelper/source/misc/servicedecl.cxx comphelper/source/misc/sharedmutex.cxx comphelper/source/misc/solarmutex.cxx comphelper/source/misc/stillreadwriteinteraction.cxx @@ -4909,7 +4908,6 @@ include/comphelper/seekableinput.hxx include/comphelper/seqstream.hxx include/comphelper/sequence.hxx include/comphelper/sequenceashashmap.hxx -include/comphelper/servicedecl.hxx include/comphelper/servicehelper.hxx include/comphelper/sharedmutex.hxx include/comphelper/simplefileaccessinteraction.hxx |