diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2015-01-07 17:42:07 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2015-01-07 17:42:23 +0100 |
commit | 8ad48d881b5d36af4d2e744cf8031b5f4b2f43e1 (patch) | |
tree | b71a231a0d14bf671934a94e2675f43ee6848f35 | |
parent | 7a091b24ef3abc2f27bfaebdd47714d936f4e9c9 (diff) |
Variadic cppu::ImplInheritanceHelper
Change-Id: I7d958fdf328e44a0d299b29a3a165425731ccf7c
-rw-r--r-- | dbaccess/source/ui/inc/brwctrlr.hxx | 4 | ||||
-rw-r--r-- | include/cppuhelper/implbase.hxx | 43 |
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 |