Automatic using ::rtl::OUString etc.
Lubos Lunak
l.lunak at suse.cz
Fri Apr 13 10:42:42 PDT 2012
On Friday 13 of April 2012, Stephan Bergmann wrote:
> On 04/12/2012 03:59 PM, Lubos Lunak wrote:
> > would somebody see a problem with this?
> >
> > sal/inc/rtl/ustring.hxx :
> > +#ifdef RTL_AUTOMATIC_USING
> > +using ::rtl::OUString;
> > +using ::rtl::OStringToOUString;
> > +using ::rtl::OUStringToOString;
> > +#endif
>
> I am not too excited about this.
>
> For one, we need to ensure that none of the URE published interface
> implicitly relies on -DRTL_AUTOMATIC_USING. (And it is not clear to me
> that compiling the sal library with -URTL_AUTOMATIC_USING could even
> catch all problems in sal headers.)
I think you are right about -URTL_AUTOMATIC_USING for sal not being a very
good idea, it'd be better to just have one check .cxx that'd include
everything in sal (and another one for URE, and whenever else needed),
without having the #define in effect. That'd make sure no problem slips
through if the file was automatically made to include inc/*.hxx , and a
failure only in the one .cxx would make it more obvious why it fails.
> For another, it increases accidental complexity (an ifdef block; yet
> another -D always passed in) for IMO little gain.
No, you see it backwards :). It reduces code annoyances for IMO very little
price.
> And for a third, it introduces a magic special case (certain names from
> the rtl namespace can be used without qualification;
Strings already kind of are a magic special case. They are the one
non-builtin type that is by far the most used one, close to the builtin ones
(which is part of the reason why many programming languages do have strings
as a builtin type). So I see nothing wrong with trying to get them as
conveniently usable as possible, as ::any::little::annoynance::there
AddsUpNumerousTimesL BECAUSE_THE_THING_IS_USED_SO_OFTEN.
I understand that this argument probably doesn't work that well with people
who have already gotten used to all kind of quirks of a codebase that has
managed to get even int and bool types complicated, since we simply have to
get the work done somehow (and I said 'we', because I can already watch
myself getting used to things I'd prefer not to), but that doesn't mean
everybody has to suck it up until the end of time.
As the strings are already namespaced by the name itself, I'd be open to
alternate solutions such as moving them out of the namespace, but that'd
break binary compatibility and the (probably only hypothetical) case of some
other code using the name for something else.
--
Lubos Lunak
l.lunak at suse.cz
More information about the LibreOffice
mailing list