Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


On 12/15/2011 02:57 PM, Lubos Lunak wrote:
On Thursday 15 of December 2011, Stephan Bergmann wrote:
On 12/13/2011 07:56 PM, Lubos Lunak wrote:
   But it might the moment you realize you're trading away things like

   SAL_INFO( "foo", 1<<   2 ) or SAL_INFO( "foo", "bar"<<   "baz" ).

Trading away the former, having to parenthesize (1<<  2) instead, is a
std C++ trade-off.  Granted, omission of the leading "ostream<<" in the
macro call makes this somewhat non-obvious.  What is traded away in the
latter case?

  The "bar"<<  "baz", which, at first glance, is nonsense. Code is not only
written, it is also read, and many more times.

Still don't get what you mean. You mean, "bar" << "baz" should be forbidden by the compiler, making sure one writes "barbaz" instead?

Anyway, bikeshedding about surface syntax is rather pointless.

  Well, I did say that longer exposure to this codebase makes people oblivious
to bad API, didn't I? This is not bikesheding. This is adding yet one more
case of ugly API to the codebase, and while it's not tragically fugly and
neither are most of the other, it simply all adds up and the result is a
fugly codebase where even adding two strings together is an exercise. And it
will not get better if such stuff will keep getting added because surface
syntax, the thing developers deal with most of the time, is supposedly rather
pointless.

I still think neither approach is more beautiful than the other. But that's subjective, of course.

   Well, that's another advantage of the format approach then. It's an
inconvenience to have to explicitly say the format string is utf-8 (and
arguments probably as well), but then this conversion can be again
limited just to logging and not to every std::ostream operation.

Yes, having the message in UTF-16 is an advantage here.  For the
ostream-based approach, we need to wait for general availability of
C++11's char16_t.

  They are log messages. They are written in English.

Erm, are we talking past each other here? The fully composed log message, with string arguments placed into it, somehow needs to handle the UTF-16 string arguments placed into it. All I wanted to say is that your approach, building up the fully composed message as rtl::OUStringBuffer, shields client code from having to specify how to translate any rtl::OUString arguments into the proper format.

Stephan

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.