comphelper/servicedecl.hxx is unused
Change-Id: I3ddb06a31c746bfd7da72368a51266d688b1230b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151570 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
parent
40f5a5be9f
commit
6a936ebc29
6 changed files with 0 additions and 326 deletions
|
@ -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
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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: */
|
|
@ -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
|
||||
|
|
|
@ -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: */
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue