* [PATCH lttng-ust] Make bitfield.h C++-friendly
@ 2019-08-20 1:51 Simon Marchi
0 siblings, 0 replies; 2+ messages in thread
From: Simon Marchi @ 2019-08-20 1:51 UTC (permalink / raw)
To: lttng-dev; +Cc: Simon Marchi
This patch changes bitfield.h to be usable in C++11.
It will probably never be compiled as C++ in the context of
lttng-ust, but this is just to keep things sync'ed across projects.
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
---
include/lttng/bitfield.h | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/include/lttng/bitfield.h b/include/lttng/bitfield.h
index 5ed629381ac6..9386fade1b76 100644
--- a/include/lttng/bitfield.h
+++ b/include/lttng/bitfield.h
@@ -70,8 +70,12 @@
* Produce a build-time error if the condition `cond` is non-zero.
* Evaluates as a size_t expression.
*/
+#ifdef __cplusplus
+#define _BT_BUILD_ASSERT(cond) ([]{static_assert((cond), "");}, 0)
+#else
#define _BT_BUILD_ASSERT(cond) \
sizeof(struct { int f:(2 * !!(cond) - 1); })
+#endif
/*
* Cast value `v` to an unsigned integer of the same size as `v`.
@@ -377,7 +381,7 @@ do { \
do { \
__typeof__(*(vptr)) *_vptr = (vptr); \
__typeof__(*_vptr) _v; \
- type *_ptr = (void *) (ptr); \
+ type *_ptr = (type *) (ptr); \
unsigned long _start = (start), _length = (length); \
type _mask, _cmask; \
unsigned long _ts = sizeof(type) * CHAR_BIT; /* type size */ \
--
2.23.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH lttng-ust] Make bitfield.h C++-friendly
[not found] <20190820015106.22331-1-simon.marchi@efficios.com>
@ 2019-08-20 2:02 ` Mathieu Desnoyers
0 siblings, 0 replies; 2+ messages in thread
From: Mathieu Desnoyers @ 2019-08-20 2:02 UTC (permalink / raw)
To: Simon Marchi; +Cc: lttng-dev
Merged in lttng-ust master branch, thanks!
Mathieu
----- On Aug 19, 2019, at 6:51 PM, Simon Marchi simon.marchi@efficios.com wrote:
> This patch changes bitfield.h to be usable in C++11.
>
> It will probably never be compiled as C++ in the context of
> lttng-ust, but this is just to keep things sync'ed across projects.
>
> Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
> ---
> include/lttng/bitfield.h | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/include/lttng/bitfield.h b/include/lttng/bitfield.h
> index 5ed629381ac6..9386fade1b76 100644
> --- a/include/lttng/bitfield.h
> +++ b/include/lttng/bitfield.h
> @@ -70,8 +70,12 @@
> * Produce a build-time error if the condition `cond` is non-zero.
> * Evaluates as a size_t expression.
> */
> +#ifdef __cplusplus
> +#define _BT_BUILD_ASSERT(cond) ([]{static_assert((cond), "");}, 0)
> +#else
> #define _BT_BUILD_ASSERT(cond) \
> sizeof(struct { int f:(2 * !!(cond) - 1); })
> +#endif
>
> /*
> * Cast value `v` to an unsigned integer of the same size as `v`.
> @@ -377,7 +381,7 @@ do { \
> do { \
> __typeof__(*(vptr)) *_vptr = (vptr); \
> __typeof__(*_vptr) _v; \
> - type *_ptr = (void *) (ptr); \
> + type *_ptr = (type *) (ptr); \
> unsigned long _start = (start), _length = (length); \
> type _mask, _cmask; \
> unsigned long _ts = sizeof(type) * CHAR_BIT; /* type size */ \
> --
> 2.23.0
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev@lists.lttng.org
> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-08-20 2:02 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-20 1:51 [PATCH lttng-ust] Make bitfield.h C++-friendly Simon Marchi
[not found] <20190820015106.22331-1-simon.marchi@efficios.com>
2019-08-20 2:02 ` Mathieu Desnoyers
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).