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


Hi,

I would like to revisit this topic.

So far what we have is:

- our change:
  http://cgit.freedesktop.org/libreoffice/ure/commit/?id=311cae41f2f94f00f4a417ad2ac9f07e1ce37ea7
- OOo change:
  http://hg.services.openoffice.org/cws/sb132/rev/c3a67e297108

Both are just removing the __PRETTY_FUNCTION__ / etc expressions, which
is not that good, I think.

IMHO there are two issues here:

1) Need to use different exrepssions based on compiler. This is what
boost/current_function.hpp does, but it's C++ and diagnose.h is used in
C code as well. Given that the code is not that long, I just copied it
from there.

2) In case the compiler is recognized, OSL_THIS_FUNC won't be be
resolved to a string value, so "foo" OSL_THIS_FUNC "bar" won't work.
Given that right now the OSL_LOG_PREFIX just contains a " " instead of
the function name, I removed OSL_THIS_FUNC from there.

The attached patch tries to solve both problems, and of course
build-tested.

Does it look sane - may i push it?

Thanks.
From 701049efc7110cc69e78d9177028596956a5999a Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@frugalware.org>
Date: Wed, 24 Nov 2010 12:28:07 +0100
Subject: [PATCH] OSL_THIS_FUNC: use logic from boot/current_function.hpp

Don't use it directly, as OSL_THIS_FUNC is used in C-only sources as
well. Also, remove OSL_THIS_FUNC from OSL_LOG_PREFIX as concatenation
does not work non-macros like __PRETTY_FUNCTION__. (The code actually
worked there only because it was defined to be " ", so we are not
removing any valuable information.)
---
 sal/inc/osl/diagnose.h |   26 ++++++++++++++------------
 1 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/sal/inc/osl/diagnose.h b/sal/inc/osl/diagnose.h
index 59f921c..c65ff6a 100644
--- a/sal/inc/osl/diagnose.h
+++ b/sal/inc/osl/diagnose.h
@@ -79,21 +79,23 @@ pfunc_osl_printDetailedDebugMessage SAL_CALL osl_setDetailedDebugMessageFunc( pf
 #define OSL_THIS_FILE       __FILE__
 
 /* the macro OSL_THIS_FUNC is intended to be an office internal macro for now */
-/* as documented in http://www.openoffice.org/issues/show_bug.cgi?id=114290 ,
-   this cannot work, so disable it for now */
-#if 1
-#define OSL_THIS_FUNC " "
-#else
-#ifdef __func__
-#define OSL_THIS_FUNC __func__
-#elif defined (__PRETTY_FUNCTION__)
+/* copied from boost/current_function.hpp to make it usable from C
+ * sources as well */
+#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && 
(__ICC >= 600))
 #define OSL_THIS_FUNC __PRETTY_FUNCTION__
-#elif defined (__FUNCTION__)
+#elif defined(__DMC__) && (__DMC__ >= 0x810)
+#define OSL_THIS_FUNC __PRETTY_FUNCTION__
+#elif defined(__FUNCSIG__)
+#define OSL_THIS_FUNC __FUNCSIG__
+#elif (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 600)) || (defined(__IBMCPP__) && 
(__IBMCPP__ >= 500))
 #define OSL_THIS_FUNC __FUNCTION__
+#elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x550)
+#define OSL_THIS_FUNC __FUNC__
+#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
+#define OSL_THIS_FUNC __func__
 #else
-#define OSL_THIS_FUNC " "
+#define OSL_THIS_FUNC "(unknown)"
 #endif
-#endif /* 1 */
 
 /* the macro OSL_TO_STRING is intended to be an office internal macro for now */
 #define OSL_TO_STRING( x ) #x
@@ -102,7 +104,7 @@ pfunc_osl_printDetailedDebugMessage SAL_CALL osl_setDetailedDebugMessageFunc( pf
 #define OSL_MACRO_VALUE_TO_STRING( x ) OSL_TO_STRING( x )
 
 /* the macro OSL_LOG_PREFIX is intended to be an office internal macro for now */
-#define OSL_LOG_PREFIX OSL_THIS_FILE ":" OSL_THIS_FUNC ":" OSL_MACRO_VALUE_TO_STRING( __LINE__ ) 
"; "
+#define OSL_LOG_PREFIX OSL_THIS_FILE ":" OSL_MACRO_VALUE_TO_STRING( __LINE__ ) "; "
 
 #define OSL_DEBUG_ONLY(s)      _OSL_DEBUG_ONLY(s)
 #define OSL_TRACE           _OSL_TRACE
-- 
1.7.3.2

Attachment: pgpPmML2bpNbi.pgp
Description: PGP signature


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.