+/*
+ * Stage 0.9 of tracepoint event generation
+ *
+ * Unfolding the enums
+ */
+#include <lttng/ust-tracepoint-event-reset.h>
+
+/* Enumeration entry (single value) */
+#undef ctf_enum_value
+#define ctf_enum_value(_string, _value) \
+ { \
+ .start = { \
+ .value = lttng_is_signed_type(__typeof__(_value)) ? \
+ (long long) (_value) : (_value), \
+ .signedness = lttng_is_signed_type(__typeof__(_value)), \
+ }, \
+ .end = { \
+ .value = lttng_is_signed_type(__typeof__(_value)) ? \
+ (long long) (_value) : (_value), \
+ .signedness = lttng_is_signed_type(__typeof__(_value)), \
+ }, \
+ .string = (_string), \
+ },
+
+/* Enumeration entry (range) */
+#undef ctf_enum_range
+#define ctf_enum_range(_string, _range_start, _range_end) \
+ { \
+ .start = { \
+ .value = lttng_is_signed_type(__typeof__(_range_start)) ? \
+ (long long) (_range_start) : (_range_start), \
+ .signedness = lttng_is_signed_type(__typeof__(_range_start)), \
+ }, \
+ .end = { \
+ .value = lttng_is_signed_type(__typeof__(_range_end)) ? \
+ (long long) (_range_end) : (_range_end), \
+ .signedness = lttng_is_signed_type(__typeof__(_range_end)), \
+ }, \
+ .string = (_string), \
+ },
+
+#undef TP_ENUM_VALUES
+#define TP_ENUM_VALUES(...) \
+ __VA_ARGS__
+
+#undef TRACEPOINT_ENUM
+#define TRACEPOINT_ENUM(_provider, _name, _values) \
+ const struct lttng_enum_entry __enum_values__##_provider##_##_name[] = { \
+ _values \
+ ctf_enum_value("", 0) /* Dummy, 0-len array forbidden by C99. */ \
+ };
+
+#include TRACEPOINT_INCLUDE
+