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@suse.cz
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.