summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2015-01-07 17:42:07 +0100
committerStephan Bergmann <sbergman@redhat.com>2015-01-07 17:42:23 +0100
commit8ad48d881b5d36af4d2e744cf8031b5f4b2f43e1 (patch)
treeb71a231a0d14bf671934a94e2675f43ee6848f35
parent7a091b24ef3abc2f27bfaebdd47714d936f4e9c9 (diff)
Variadic cppu::ImplInheritanceHelper
Change-Id: I7d958fdf328e44a0d299b29a3a165425731ccf7c
-rw-r--r--dbaccess/source/ui/inc/brwctrlr.hxx4
-rw-r--r--include/cppuhelper/implbase.hxx43
2 files changed, 45 insertions, 2 deletions
diff --git a/dbaccess/source/ui/inc/brwctrlr.hxx b/dbaccess/source/ui/inc/brwctrlr.hxx
index 87c0fd3cd8ee..4644830f66c0 100644
--- a/dbaccess/source/ui/inc/brwctrlr.hxx
+++ b/dbaccess/source/ui/inc/brwctrlr.hxx
@@ -43,7 +43,7 @@
#include <svtools/transfer.hxx>
#include <osl/mutex.hxx>
#include <osl/thread.hxx>
-#include <cppuhelper/implbase9.hxx>
+#include <cppuhelper/implbase.hxx>
#include <svtools/cliplistener.hxx>
struct FmFoundRecordInformation;
@@ -57,7 +57,7 @@ namespace dbtools
namespace dbaui
{
- typedef ::cppu::ImplInheritanceHelper9 < OGenericUnoController
+ typedef ::cppu::ImplInheritanceHelper < OGenericUnoController
, ::com::sun::star::sdb::XSQLErrorListener
, ::com::sun::star::form::XDatabaseParameterListener
, ::com::sun::star::form::XConfirmDeleteListener
diff --git a/include/cppuhelper/implbase.hxx b/include/cppuhelper/implbase.hxx
index 813ea3d0cf42..e97196d8532e 100644
--- a/include/cppuhelper/implbase.hxx
+++ b/include/cppuhelper/implbase.hxx
@@ -24,6 +24,7 @@
#include <cstddef>
#include <exception>
+#include <utility>
#include <com/sun/star/lang/XTypeProvider.hpp>
#include <com/sun/star/uno/Any.hxx>
@@ -89,6 +90,11 @@ class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE WeakImplHelper:
class_data, detail::ImplClassData<WeakImplHelper, Ifc...>>
{};
+protected:
+ WeakImplHelper() {}
+
+ virtual ~WeakImplHelper() {}
+
public:
css::uno::Any SAL_CALL queryInterface(css::uno::Type const & aType)
throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE
@@ -107,6 +113,43 @@ public:
{ return css::uno::Sequence<sal_Int8>(); }
};
+template<typename BaseClass, typename... Ifc>
+class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE ImplInheritanceHelper:
+ public BaseClass, public Ifc...
+{
+ struct cd:
+ rtl::StaticAggregate<
+ class_data, detail::ImplClassData<ImplInheritanceHelper, Ifc...>>
+ {};
+
+protected:
+ template<typename... Arg> ImplInheritanceHelper(Arg &&... arg):
+ BaseClass(std::forward<Arg>(arg)...)
+ {}
+
+ virtual ~ImplInheritanceHelper() {}
+
+public:
+ css::uno::Any SAL_CALL queryInterface(css::uno::Type const & aType)
+ throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE
+ {
+ css::uno::Any ret(ImplHelper_queryNoXInterface(aType, cd::get(), this));
+ return ret.hasValue() ? ret : BaseClass::queryInterface(aType);
+ }
+
+ void SAL_CALL acquire() throw () SAL_OVERRIDE { BaseClass::acquire(); }
+
+ void SAL_CALL release() throw () SAL_OVERRIDE { BaseClass::release(); }
+
+ css::uno::Sequence<css::uno::Type> SAL_CALL getTypes()
+ throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE
+ { return ImplInhHelper_getTypes(cd::get(), BaseClass::getTypes()); }
+
+ css::uno::Sequence<sal_Int8> SAL_CALL getImplementationId()
+ throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE
+ { return css::uno::Sequence<sal_Int8>(); }
+};
+
}
#endif