summaryrefslogtreecommitdiff
path: root/scaddins/source/pricing
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2020-07-22 14:16:17 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-07-23 09:25:36 +0200
commitc049d5336c110196886480330dba9238faee0e39 (patch)
treecb4bf90927e4076dbb607d9000b86406381010a2 /scaddins/source/pricing
parent7f0fb9a5e7bce720c6fd2d7ddc9fa9dbd353d8a1 (diff)
scaddins: create instances with uno constructors
See tdf#74608 for motivation. Change-Id: I678bc7fb73b5863b1656dc7f8b12c5b903c33b3e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99225 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'scaddins/source/pricing')
-rw-r--r--scaddins/source/pricing/pricing.component5
-rw-r--r--scaddins/source/pricing/pricing.cxx51
-rw-r--r--scaddins/source/pricing/pricing.hxx7
3 files changed, 12 insertions, 51 deletions
diff --git a/scaddins/source/pricing/pricing.component b/scaddins/source/pricing/pricing.component
index 6083144a4111..fcee10771c70 100644
--- a/scaddins/source/pricing/pricing.component
+++ b/scaddins/source/pricing/pricing.component
@@ -18,8 +18,9 @@
-->
<component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
- prefix="pricing" xmlns="http://openoffice.org/2010/uno-components">
- <implementation name="com.sun.star.sheet.addin.PricingFunctionsImpl">
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.sheet.addin.PricingFunctionsImpl"
+ constructor="scaddins_ScaPricingAddIn_get_implementation">
<service name="com.sun.star.sheet.AddIn"/>
<service name="com.sun.star.sheet.addin.PricingFunctions"/>
</implementation>
diff --git a/scaddins/source/pricing/pricing.cxx b/scaddins/source/pricing/pricing.cxx
index 4781baa9babe..6cbb13256464 100644
--- a/scaddins/source/pricing/pricing.cxx
+++ b/scaddins/source/pricing/pricing.cxx
@@ -33,6 +33,7 @@
#include <iostream>
#include <algorithm>
#include <rtl/math.hxx>
+#include <rtl/ref.hxx>
#include <unotools/resmgr.hxx>
#include <i18nlangtag/languagetag.hxx>
@@ -87,40 +88,16 @@ void sca::pricing::InitScaFuncDataList(ScaFuncDataList& rList)
}
// entry points for service registration / instantiation
-static uno::Reference< uno::XInterface > ScaPricingAddIn_CreateInstance(
- const uno::Reference< lang::XMultiServiceFactory >& )
-{
- return static_cast<cppu::OWeakObject*>(new ScaPricingAddIn());
-}
-
-extern "C" {
-SAL_DLLPUBLIC_EXPORT void * pricing_component_getFactory(
- const char * pImplName, void * pServiceManager, void * /*pRegistryKey*/ )
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+scaddins_ScaPricingAddIn_get_implementation(
+ css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any> const&)
{
- void* pRet = nullptr;
-
- if ( pServiceManager &&
- OUString::createFromAscii( pImplName ) == ScaPricingAddIn::getImplementationName_Static() )
- {
- uno::Reference< lang::XSingleServiceFactory > xFactory( cppu::createOneInstanceFactory(
- static_cast< lang::XMultiServiceFactory* >( pServiceManager ),
- ScaPricingAddIn::getImplementationName_Static(),
- ScaPricingAddIn_CreateInstance,
- ScaPricingAddIn::getSupportedServiceNames_Static() ) );
-
- if (xFactory.is())
- {
- xFactory->acquire();
- pRet = xFactory.get();
- }
- }
-
- return pRet;
+ static rtl::Reference<ScaPricingAddIn> g_Instance(new ScaPricingAddIn());
+ g_Instance->acquire();
+ return static_cast<cppu::OWeakObject*>(g_Instance.get());
}
-} // extern C
-
// "normal" service implementation
ScaPricingAddIn::ScaPricingAddIn()
{
@@ -166,16 +143,6 @@ OUString ScaPricingAddIn::GetFuncDescrStr(const char** pResId, sal_uInt16 nStrIn
return ScaResId(pResId[nStrIndex - 1]);
}
-OUString ScaPricingAddIn::getImplementationName_Static()
-{
- return MY_IMPLNAME;
-}
-
-uno::Sequence< OUString > ScaPricingAddIn::getSupportedServiceNames_Static()
-{
- return { ADDIN_SERVICE, MY_SERVICE };
-}
-
// XServiceName
OUString SAL_CALL ScaPricingAddIn::getServiceName()
{
@@ -186,7 +153,7 @@ OUString SAL_CALL ScaPricingAddIn::getServiceName()
// XServiceInfo
OUString SAL_CALL ScaPricingAddIn::getImplementationName()
{
- return getImplementationName_Static();
+ return MY_IMPLNAME;
}
sal_Bool SAL_CALL ScaPricingAddIn::supportsService( const OUString& aServiceName )
@@ -196,7 +163,7 @@ sal_Bool SAL_CALL ScaPricingAddIn::supportsService( const OUString& aServiceName
uno::Sequence< OUString > SAL_CALL ScaPricingAddIn::getSupportedServiceNames()
{
- return getSupportedServiceNames_Static();
+ return { ADDIN_SERVICE, MY_SERVICE };
}
// XLocalizable
diff --git a/scaddins/source/pricing/pricing.hxx b/scaddins/source/pricing/pricing.hxx
index ead7296762a4..9fe391f349ef 100644
--- a/scaddins/source/pricing/pricing.hxx
+++ b/scaddins/source/pricing/pricing.hxx
@@ -114,10 +114,6 @@ struct FindScaFuncData
} // namespace sca::pricing
-css::uno::Reference< css::uno::XInterface > SAL_CALL PricingFunctionAddIn_CreateInstance(
- const css::uno::Reference< css::lang::XMultiServiceFactory >& );
-
-
// AddIn class for pricing functions
class ScaPricingAddIn : public ::cppu::WeakImplHelper<
@@ -147,9 +143,6 @@ public:
OUString ScaResId(const char* pResId);
- static OUString getImplementationName_Static();
- static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
-
// XAddIn
virtual OUString SAL_CALL getProgrammaticFuntionName( const OUString& aDisplayName ) override;
virtual OUString SAL_CALL getDisplayFunctionName( const OUString& aProgrammaticName ) override;