[lttng-dev] [PATCH lttng-modules] Make bitfield.h C++-friendly
Simon Marchi
simon.marchi at efficios.com
Mon Aug 19 21:51:52 EDT 2019
This patch changes bitfield.h to be usable in C++11.
It will probably never be compiled as C++ in the context of
lttng-modules, but this is just to keep things sync'ed across projects.
Signed-off-by: Simon Marchi <simon.marchi at efficios.com>
---
lib/bitfield.h | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lib/bitfield.h b/lib/bitfield.h
index a9e268b41530..7d5eaeaa068d 100644
--- a/lib/bitfield.h
+++ b/lib/bitfield.h
@@ -55,8 +55,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`.
@@ -362,7 +366,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
More information about the lttng-dev
mailing list