conversion operators for UNO

Lubos Lunak l.lunak at suse.cz
Thu Apr 25 04:48:46 PDT 2013


On Thursday 25 of April 2013, Michael Stahl wrote:
> On 25/04/13 12:08, Noel Grandin wrote:
> > On 2013-04-25 11:59, Michael Stahl wrote:
> >> e.g. this problem here caused a 3 % or so slowdown in ODF file load
> >> and/or save (i forgot which), mainly due to 2 additional queryInterface
> >> calls in a critical place:
> >> https://issues.apache.org/ooo/show_bug.cgi?id=108161
> >>
> >> with your proposal it would be possible to write code like:
> >>
> >> 	Reference<B> b = ...
> >> 	methodFooThatTakesA( b );
> >> 	methodBarThatTakesA( b );
> >> 	methodBazThatTakesA( b );
> >>
> >> ... and get 3 queryInterface calls instead of 1.
> >>
> >> or let me reformulate that: is it possible to implement your
> >> hypothetical operator such that it does not call queryInterface (i don't
> >> know).

 A and B are normal C++ classes with the right inheritance, aren't they? I'd 
expect a template uno::Reference ctor with the right check for allowing only 
inheriting types should do.

> > My desire is to make the UNO code less "noisy".
> > And it matches the natural semantics of C++, which is that it's possible
> > to pass a subtype of the expected parameter's type.
>
> hmmm... looking at the amount of boilerplate involved one gets the
> impression that UNO somehow appears more natural in languages that
> aren't C++ :)

 Probably nobody has spent enough time to design that boilerplate for those 
other languages :).

-- 
 Lubos Lunak
 l.lunak at suse.cz


More information about the LibreOffice mailing list