Adding an implemented UNO interface

Lionel Élie Mamane lionel at mamane.lu
Mon Sep 4 18:42:56 UTC 2023


On Mon, Sep 04, 2023 at 11:58:23AM +0200, Lionel Élie Mamane wrote:

> Reading up on ImplInheritanceHelper, I think you meant (or my question
> was unclear, but the answer to the question I had meant to ask is)

> typedef cppu::ImplInheritanceHelper <grault, css::corge > bar_BASE;

> class bar: public bar_BASE
> {
>    ....
> }

Now we hit the problem that css::corge is an extension of an interface
already implemented by grault (let's call it css::qux), so css:qux
becomes an ambiguous base of class bar, as it is derived from twice
:-|

How do we solve that?

So to recap (and rename corge to qux2 for better clarity) we have:

/* qux2.idl contains:
 *
 * interface qux2 : qux
 * {
 *     ... stuff ...
 * )
 */


#include <grault.hxx>
/* grault.hxx contains:
 *
 * typedef ::cppu::WeakComponentImplHelper2 <
 *            css::baz,
 *            css::qux >  grault_BASE;
 *
 * class grault : public grault_BASE { ... }
 */

typedef grault bar_BASE;

class bar : public bar_BASE
{
   ...
}


and what we want to achieve is to implement interface css::qux2 in
class bar. Surely there must be a recipe for that.

(For Stephan: css::qux above is css::sdbc::XConnection in the patch,
 and qux2 is the newly introduced css::sdbc::XConnection2)


More information about the LibreOffice mailing list