Hi

Because of the way UNO works, it is quite common for the same UNO interface to be implemented at multiple places in the class hierarchy.
The solution to this is virtual inheritance.

However, we cannot simply "turn it on" because:
(a) it would break binary compatibility
(b) there is quite a lot of code that would need to change
(c) It is quite likely that there is code that will stop working when it starts using virtual inheritance.

For this reason, I would like __as a temporary measure__[0] to introduce a "virtual" keyword[1] to the UNO IDL.
This keyword would have no meaning for languages other than C++.[2]

I don't think we can realistically expect to be able to implement virtual inheritance any other way. A "big bang" approach would require massive amounts of testing and a fairly large patch.

With an incremental approach, we can modify the non-public bits first, flushing out bugs slowly and gaining experience with the likely problems.
Also, we can mandate that new UNO interfaces use virtual inheritance.

Then whenever we do our ABI-breaking release, we can spend that dev cycle sorting out the public interfaces.

Regards, Noel Grandin

[0] I do realise that "temporary" in this case is likely to be
    2-5 years :-)

[1] My proposed syntax is something along the lines of
    interface MyInterface {
       virtual interface MyBaseInterface;
    }

[2] Perhaps we can make the syntax more obviously C++ specific?

Disclaimer: http://www.peralex.com/disclaimer.html


_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to