Coverage Report

Created: 2025-11-16 09:57

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/include/cppuhelper/implbase9.hxx
Line
Count
Source
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/*
3
 * This file is part of the LibreOffice project.
4
 *
5
 * This Source Code Form is subject to the terms of the Mozilla Public
6
 * License, v. 2.0. If a copy of the MPL was not distributed with this
7
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
 *
9
 * This file incorporates work covered by the following license notice:
10
 *
11
 *   Licensed to the Apache Software Foundation (ASF) under one or more
12
 *   contributor license agreements. See the NOTICE file distributed
13
 *   with this work for additional information regarding copyright
14
 *   ownership. The ASF licenses this file to you under the Apache
15
 *   License, Version 2.0 (the "License"); you may not use this file
16
 *   except in compliance with the License. You may obtain a copy of
17
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18
 */
19
20
/*
21
 * This file is part of LibreOffice published API.
22
 */
23
#ifndef INCLUDED_CPPUHELPER_IMPLBASE9_HXX
24
#define INCLUDED_CPPUHELPER_IMPLBASE9_HXX
25
26
#include "cppuhelper/implbase_ex.hxx"
27
#include "rtl/instance.hxx"
28
#include "cppuhelper/weak.hxx"
29
#include "cppuhelper/weakagg.hxx"
30
#include "com/sun/star/lang/XTypeProvider.hpp"
31
32
namespace cppu
33
{
34
    /// @cond INTERNAL
35
36
    struct class_data9
37
    {
38
        sal_Int16 m_nTypes;
39
        sal_Bool m_storedTypeRefs;
40
        sal_Bool m_storedId;
41
        sal_Int8 m_id[ 16 ];
42
        type_entry m_typeEntries[ 9 + 1 ];
43
    };
44
45
    template< typename Ifc1, typename Ifc2, typename Ifc3, typename Ifc4, typename Ifc5, typename Ifc6, typename Ifc7, typename Ifc8, typename Ifc9, typename Impl >
46
    struct SAL_WARN_UNUSED ImplClassData9
47
    {
48
        class_data* operator ()()
49
2
        {
50
2
            static class_data9 s_cd =
51
2
            {
52
2
                9 +1, false, false,
53
2
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
54
2
                {
55
2
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc1),
56
2
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc2),
57
2
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc3),
58
2
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc4),
59
2
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc5),
60
2
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc6),
61
2
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc7),
62
2
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc8),
63
2
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc9),
64
2
                    CPPUHELPER_DETAIL_TYPEENTRY(css::lang::XTypeProvider)
65
2
                }
66
2
            };
67
2
            return reinterpret_cast< class_data * >(&s_cd);
68
2
        }
cppu::ImplClassData9<com::sun::star::awt::XControl, com::sun::star::awt::XWindow2, com::sun::star::awt::XView, com::sun::star::beans::XPropertiesChangeListener, com::sun::star::lang::XServiceInfo, com::sun::star::accessibility::XAccessible, com::sun::star::util::XModeChangeBroadcaster, com::sun::star::awt::XUnitConversion, com::sun::star::awt::XStyleSettingsSupplier, cppu::WeakAggImplHelper9<com::sun::star::awt::XControl, com::sun::star::awt::XWindow2, com::sun::star::awt::XView, com::sun::star::beans::XPropertiesChangeListener, com::sun::star::lang::XServiceInfo, com::sun::star::accessibility::XAccessible, com::sun::star::util::XModeChangeBroadcaster, com::sun::star::awt::XUnitConversion, com::sun::star::awt::XStyleSettingsSupplier> >::operator()()
Line
Count
Source
49
1
        {
50
1
            static class_data9 s_cd =
51
1
            {
52
1
                9 +1, false, false,
53
1
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
54
1
                {
55
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc1),
56
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc2),
57
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc3),
58
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc4),
59
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc5),
60
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc6),
61
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc7),
62
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc8),
63
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc9),
64
1
                    CPPUHELPER_DETAIL_TYPEENTRY(css::lang::XTypeProvider)
65
1
                }
66
1
            };
67
1
            return reinterpret_cast< class_data * >(&s_cd);
68
1
        }
cppu::ImplClassData9<com::sun::star::sdbcx::XRowLocate, com::sun::star::sdbc::XRow, com::sun::star::sdbc::XResultSetMetaDataSupplier, com::sun::star::sdbc::XWarningsSupplier, com::sun::star::sdbc::XColumnLocate, com::sun::star::sdbcx::XColumnsSupplier, com::sun::star::lang::XServiceInfo, com::sun::star::sdbc::XRowSet, com::sun::star::sdbc::XCloseable, cppu::ImplHelper9<com::sun::star::sdbcx::XRowLocate, com::sun::star::sdbc::XRow, com::sun::star::sdbc::XResultSetMetaDataSupplier, com::sun::star::sdbc::XWarningsSupplier, com::sun::star::sdbc::XColumnLocate, com::sun::star::sdbcx::XColumnsSupplier, com::sun::star::lang::XServiceInfo, com::sun::star::sdbc::XRowSet, com::sun::star::sdbc::XCloseable> >::operator()()
Line
Count
Source
49
1
        {
50
1
            static class_data9 s_cd =
51
1
            {
52
1
                9 +1, false, false,
53
1
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
54
1
                {
55
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc1),
56
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc2),
57
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc3),
58
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc4),
59
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc5),
60
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc6),
61
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc7),
62
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc8),
63
1
                    CPPUHELPER_DETAIL_TYPEENTRY(Ifc9),
64
1
                    CPPUHELPER_DETAIL_TYPEENTRY(css::lang::XTypeProvider)
65
1
                }
66
1
            };
67
1
            return reinterpret_cast< class_data * >(&s_cd);
68
1
        }
69
    };
70
71
    /// @endcond
72
73
    /** Implementation helper implementing interface css::lang::XTypeProvider
74
        and method XInterface::queryInterface(), but no reference counting.
75
76
        @derive
77
        Inherit from this class giving your interface(s) to be implemented as template argument(s).
78
        Your sub class defines method implementations for these interface(s) including acquire()/
79
        release() and delegates incoming queryInterface() calls to this base class.
80
    */
81
    template< class Ifc1, class Ifc2, class Ifc3, class Ifc4, class Ifc5, class Ifc6, class Ifc7, class Ifc8, class Ifc9 >
82
    class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE ImplHelper9
83
        : public css::lang::XTypeProvider
84
        , public Ifc1, public Ifc2, public Ifc3, public Ifc4, public Ifc5, public Ifc6, public Ifc7, public Ifc8, public Ifc9
85
    {
86
        struct cd : public rtl::StaticAggregate< class_data, ImplClassData9< Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, Ifc6, Ifc7, Ifc8, Ifc9, ImplHelper9<Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, Ifc6, Ifc7, Ifc8, Ifc9> > > {};
87
    public:
88
#if defined LIBO_INTERNAL_ONLY
89
9.78k
        ImplHelper9() = default;
90
        ImplHelper9(ImplHelper9 const &) = default;
91
        ImplHelper9(ImplHelper9 &&) = default;
92
        ImplHelper9 & operator =(ImplHelper9 const &) = default;
93
        ImplHelper9 & operator =(ImplHelper9 &&) = default;
94
#endif
95
96
        virtual css::uno::Any SAL_CALL queryInterface( css::uno::Type const & rType ) SAL_OVERRIDE
97
257k
            { return ImplHelper_query( rType, cd::get(), this ); }
98
        virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() SAL_OVERRIDE
99
0
            { return ImplHelper_getTypes( cd::get() ); }
100
        virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() SAL_OVERRIDE
101
0
            { return ImplHelper_getImplementationId( cd::get() ); }
102
103
#if !defined _MSC_VER // public -> protected changes mangled names there
104
    protected:
105
#endif
106
9.78k
        ~ImplHelper9() SAL_NOEXCEPT {}
107
    };
108
    /** Implementation helper implementing interfaces css::lang::XTypeProvider and
109
        css::uno::XInterface which supports weak mechanism to be held weakly
110
        (supporting css::uno::XWeak through ::cppu::OWeakObject).
111
112
        @derive
113
        Inherit from this class giving your interface(s) to be implemented as template argument(s).
114
        Your sub class defines method implementations for these interface(s).
115
    */
116
    template< class Ifc1, class Ifc2, class Ifc3, class Ifc4, class Ifc5, class Ifc6, class Ifc7, class Ifc8, class Ifc9 >
117
    class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE WeakImplHelper9
118
        : public OWeakObject
119
        , public css::lang::XTypeProvider
120
        , public Ifc1, public Ifc2, public Ifc3, public Ifc4, public Ifc5, public Ifc6, public Ifc7, public Ifc8, public Ifc9
121
    {
122
        struct cd : public rtl::StaticAggregate< class_data, ImplClassData9< Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, Ifc6, Ifc7, Ifc8, Ifc9, WeakImplHelper9<Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, Ifc6, Ifc7, Ifc8, Ifc9> > > {};
123
    public:
124
        virtual css::uno::Any SAL_CALL queryInterface( css::uno::Type const & rType ) SAL_OVERRIDE
125
            { return WeakImplHelper_query( rType, cd::get(), this, static_cast<OWeakObject *>(this) ); }
126
        virtual void SAL_CALL acquire() SAL_NOEXCEPT SAL_OVERRIDE
127
            { OWeakObject::acquire(); }
128
        virtual void SAL_CALL release() SAL_NOEXCEPT SAL_OVERRIDE
129
            { OWeakObject::release(); }
130
        virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() SAL_OVERRIDE
131
            { return WeakImplHelper_getTypes( cd::get() ); }
132
        virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() SAL_OVERRIDE
133
            { return ImplHelper_getImplementationId( cd::get() ); }
134
    };
135
    /** Implementation helper implementing interfaces css::lang::XTypeProvider and
136
        css::uno::XInterface which supports weak mechanism to be held weakly
137
        (supporting css::uno::XWeak through ::cppu::OWeakAggObject).
138
        In addition, it supports also aggregation meaning object of this class can be aggregated
139
        (css::uno::XAggregation through ::cppu::OWeakAggObject).
140
        If a delegator is set (this object is aggregated), then incoming queryInterface()
141
        calls are delegated to the delegator object. If the delegator does not support the
142
        demanded interface, it calls queryAggregation() on its aggregated objects.
143
144
        @derive
145
        Inherit from this class giving your interface(s) to be implemented as template argument(s).
146
        Your sub class defines method implementations for these interface(s).
147
    */
148
    template< class Ifc1, class Ifc2, class Ifc3, class Ifc4, class Ifc5, class Ifc6, class Ifc7, class Ifc8, class Ifc9 >
149
    class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE WeakAggImplHelper9
150
        : public OWeakAggObject
151
        , public css::lang::XTypeProvider
152
        , public Ifc1, public Ifc2, public Ifc3, public Ifc4, public Ifc5, public Ifc6, public Ifc7, public Ifc8, public Ifc9
153
    {
154
        struct cd : public rtl::StaticAggregate< class_data, ImplClassData9< Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, Ifc6, Ifc7, Ifc8, Ifc9, WeakAggImplHelper9<Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, Ifc6, Ifc7, Ifc8, Ifc9> > > {};
155
    public:
156
        virtual css::uno::Any SAL_CALL queryInterface( css::uno::Type const & rType ) SAL_OVERRIDE
157
51
            { return OWeakAggObject::queryInterface( rType ); }
158
        virtual css::uno::Any SAL_CALL queryAggregation( css::uno::Type const & rType ) SAL_OVERRIDE
159
34
            { return WeakAggImplHelper_queryAgg( rType, cd::get(), this, static_cast<OWeakAggObject *>(this) ); }
160
        virtual void SAL_CALL acquire() SAL_NOEXCEPT SAL_OVERRIDE
161
272
            { OWeakAggObject::acquire(); }
162
        virtual void SAL_CALL release() SAL_NOEXCEPT SAL_OVERRIDE
163
272
            { OWeakAggObject::release(); }
164
        virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() SAL_OVERRIDE
165
0
            { return WeakAggImplHelper_getTypes( cd::get() ); }
166
        virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() SAL_OVERRIDE
167
0
            { return ImplHelper_getImplementationId( cd::get() ); }
168
    };
169
    /** Implementation helper implementing interfaces css::lang::XTypeProvider and
170
        css::uno::XInterface inheriting from a BaseClass.
171
        All acquire() and release() calls are delegated to the BaseClass. Upon queryInterface(),
172
        if a demanded interface is not supported by this class directly, the request is
173
        delegated to the BaseClass.
174
175
        @attention
176
        The BaseClass has to be complete in a sense, that css::uno::XInterface
177
        and css::lang::XTypeProvider are implemented properly.  The
178
        BaseClass must have at least one ctor that can be called with six or
179
        fewer arguments, of which none is of non-const reference type.
180
181
        @derive
182
        Inherit from this class giving your additional interface(s) to be implemented as
183
        template argument(s). Your sub class defines method implementations for these interface(s).
184
    */
185
    template< class BaseClass, class Ifc1, class Ifc2, class Ifc3, class Ifc4, class Ifc5, class Ifc6, class Ifc7, class Ifc8, class Ifc9 >
186
    class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE ImplInheritanceHelper9
187
        : public BaseClass
188
        , public Ifc1, public Ifc2, public Ifc3, public Ifc4, public Ifc5, public Ifc6, public Ifc7, public Ifc8, public Ifc9
189
    {
190
        struct cd : public rtl::StaticAggregate< class_data, ImplClassData9< Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, Ifc6, Ifc7, Ifc8, Ifc9, ImplInheritanceHelper9<BaseClass, Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, Ifc6, Ifc7, Ifc8, Ifc9> > > {};
191
    protected:
192
        template< typename T1 >
193
        explicit ImplInheritanceHelper9(T1 const & arg1): BaseClass(arg1) {}
194
        template< typename T1, typename T2 >
195
        ImplInheritanceHelper9(T1 const & arg1, T2 const & arg2):
196
            BaseClass(arg1, arg2) {}
197
        template< typename T1, typename T2, typename T3 >
198
        ImplInheritanceHelper9(
199
            T1 const & arg1, T2 const & arg2, T3 const & arg3):
200
            BaseClass(arg1, arg2, arg3) {}
201
        template< typename T1, typename T2, typename T3, typename T4 >
202
        ImplInheritanceHelper9(
203
            T1 const & arg1, T2 const & arg2, T3 const & arg3, T4 const & arg4):
204
            BaseClass(arg1, arg2, arg3, arg4) {}
205
        template<
206
            typename T1, typename T2, typename T3, typename T4, typename T5 >
207
        ImplInheritanceHelper9(
208
            T1 const & arg1, T2 const & arg2, T3 const & arg3, T4 const & arg4,
209
            T5 const & arg5):
210
            BaseClass(arg1, arg2, arg3, arg4, arg5) {}
211
        template<
212
            typename T1, typename T2, typename T3, typename T4, typename T5,
213
            typename T6 >
214
        ImplInheritanceHelper9(
215
            T1 const & arg1, T2 const & arg2, T3 const & arg3, T4 const & arg4,
216
            T5 const & arg5, T6 const & arg6):
217
            BaseClass(arg1, arg2, arg3, arg4, arg5, arg6) {}
218
    public:
219
        ImplInheritanceHelper9() {}
220
        virtual css::uno::Any SAL_CALL queryInterface( css::uno::Type const & rType ) SAL_OVERRIDE
221
            {
222
                css::uno::Any aRet( ImplHelper_queryNoXInterface( rType, cd::get(), this ) );
223
                if (aRet.hasValue())
224
                    return aRet;
225
                return BaseClass::queryInterface( rType );
226
            }
227
        virtual void SAL_CALL acquire() SAL_NOEXCEPT SAL_OVERRIDE
228
            { BaseClass::acquire(); }
229
        virtual void SAL_CALL release() SAL_NOEXCEPT SAL_OVERRIDE
230
            { BaseClass::release(); }
231
        virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() SAL_OVERRIDE
232
            { return ImplInhHelper_getTypes( cd::get(), BaseClass::getTypes() ); }
233
        virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() SAL_OVERRIDE
234
            { return ImplHelper_getImplementationId( cd::get() ); }
235
    };
236
    /** Implementation helper implementing interfaces css::lang::XTypeProvider and
237
        css::uno::XInterface inheriting from a BaseClass.
238
        All acquire(),  release() and queryInterface() calls are delegated to the BaseClass.
239
        Upon queryAggregation(), if a demanded interface is not supported by this class directly,
240
        the request is delegated to the BaseClass.
241
242
        @attention
243
        The BaseClass has to be complete in a sense, that css::uno::XInterface,
244
        css::uno::XAggregation and css::lang::XTypeProvider
245
        are implemented properly.  The BaseClass must have at least one ctor
246
        that can be called with six or fewer arguments, of which none is of
247
        non-const reference type.
248
249
        @derive
250
        Inherit from this class giving your additional interface(s) to be implemented as
251
        template argument(s). Your sub class defines method implementations for these interface(s).
252
    */
253
    template< class BaseClass, class Ifc1, class Ifc2, class Ifc3, class Ifc4, class Ifc5, class Ifc6, class Ifc7, class Ifc8, class Ifc9 >
254
    class SAL_NO_VTABLE SAL_DLLPUBLIC_TEMPLATE AggImplInheritanceHelper9
255
        : public BaseClass
256
        , public Ifc1, public Ifc2, public Ifc3, public Ifc4, public Ifc5, public Ifc6, public Ifc7, public Ifc8, public Ifc9
257
    {
258
        struct cd : public rtl::StaticAggregate< class_data, ImplClassData9< Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, Ifc6, Ifc7, Ifc8, Ifc9, AggImplInheritanceHelper9<BaseClass, Ifc1, Ifc2, Ifc3, Ifc4, Ifc5, Ifc6, Ifc7, Ifc8, Ifc9> > > {};
259
    protected:
260
        template< typename T1 >
261
        explicit AggImplInheritanceHelper9(T1 const & arg1): BaseClass(arg1) {}
262
        template< typename T1, typename T2 >
263
        AggImplInheritanceHelper9(T1 const & arg1, T2 const & arg2):
264
            BaseClass(arg1, arg2) {}
265
        template< typename T1, typename T2, typename T3 >
266
        AggImplInheritanceHelper9(
267
            T1 const & arg1, T2 const & arg2, T3 const & arg3):
268
            BaseClass(arg1, arg2, arg3) {}
269
        template< typename T1, typename T2, typename T3, typename T4 >
270
        AggImplInheritanceHelper9(
271
            T1 const & arg1, T2 const & arg2, T3 const & arg3, T4 const & arg4):
272
            BaseClass(arg1, arg2, arg3, arg4) {}
273
        template<
274
            typename T1, typename T2, typename T3, typename T4, typename T5 >
275
        AggImplInheritanceHelper9(
276
            T1 const & arg1, T2 const & arg2, T3 const & arg3, T4 const & arg4,
277
            T5 const & arg5):
278
            BaseClass(arg1, arg2, arg3, arg4, arg5) {}
279
        template<
280
            typename T1, typename T2, typename T3, typename T4, typename T5,
281
            typename T6 >
282
        AggImplInheritanceHelper9(
283
            T1 const & arg1, T2 const & arg2, T3 const & arg3, T4 const & arg4,
284
            T5 const & arg5, T6 const & arg6):
285
            BaseClass(arg1, arg2, arg3, arg4, arg5, arg6) {}
286
    public:
287
        AggImplInheritanceHelper9() {}
288
        virtual css::uno::Any SAL_CALL queryInterface( css::uno::Type const & rType ) SAL_OVERRIDE
289
            { return BaseClass::queryInterface( rType ); }
290
        virtual css::uno::Any SAL_CALL queryAggregation( css::uno::Type const & rType ) SAL_OVERRIDE
291
            {
292
                css::uno::Any aRet( ImplHelper_queryNoXInterface( rType, cd::get(), this ) );
293
                if (aRet.hasValue())
294
                    return aRet;
295
                return BaseClass::queryAggregation( rType );
296
            }
297
        virtual void SAL_CALL acquire() SAL_NOEXCEPT SAL_OVERRIDE
298
            { BaseClass::acquire(); }
299
        virtual void SAL_CALL release() SAL_NOEXCEPT SAL_OVERRIDE
300
            { BaseClass::release(); }
301
        virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() SAL_OVERRIDE
302
            { return ImplInhHelper_getTypes( cd::get(), BaseClass::getTypes() ); }
303
        virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() SAL_OVERRIDE
304
            { return ImplHelper_getImplementationId( cd::get() ); }
305
    };
306
}
307
308
#endif
309
310
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */