Refactoring: type description structures
[lttng-modules.git] / include / lttng / events-internal.h
index 6749b38388ac38ce8737a5c11cac43bb63be2a4c..0c7628483271c06c0b012444371bbaced4e100a8 100644 (file)
@@ -8,4 +8,80 @@
 #ifndef _LTTNG_EVENTS_INTERNAL_H
 #define _LTTNG_EVENTS_INTERNAL_H
 
+#include <lttng/events.h>
+
+static inline
+const struct lttng_kernel_type_integer *lttng_kernel_get_type_integer(const struct lttng_kernel_type_common *type)
+{
+       if (type->type != lttng_kernel_type_integer)
+               return NULL;
+       return container_of(type, const struct lttng_kernel_type_integer, parent);
+}
+
+static inline
+const struct lttng_kernel_type_string *lttng_kernel_get_type_string(const struct lttng_kernel_type_common *type)
+{
+       if (type->type != lttng_kernel_type_string)
+               return NULL;
+       return container_of(type, const struct lttng_kernel_type_string, parent);
+}
+
+static inline
+const struct lttng_kernel_type_enum *lttng_kernel_get_type_enum(const struct lttng_kernel_type_common *type)
+{
+       if (type->type != lttng_kernel_type_enum)
+               return NULL;
+       return container_of(type, const struct lttng_kernel_type_enum, parent);
+}
+
+static inline
+const struct lttng_kernel_type_array *lttng_kernel_get_type_array(const struct lttng_kernel_type_common *type)
+{
+       if (type->type != lttng_kernel_type_array)
+               return NULL;
+       return container_of(type, const struct lttng_kernel_type_array, parent);
+}
+
+static inline
+const struct lttng_kernel_type_sequence *lttng_kernel_get_type_sequence(const struct lttng_kernel_type_common *type)
+{
+       if (type->type != lttng_kernel_type_sequence)
+               return NULL;
+       return container_of(type, const struct lttng_kernel_type_sequence, parent);
+}
+
+static inline
+const struct lttng_kernel_type_struct *lttng_kernel_get_type_struct(const struct lttng_kernel_type_common *type)
+{
+       if (type->type != lttng_kernel_type_struct)
+               return NULL;
+       return container_of(type, const struct lttng_kernel_type_struct, parent);
+}
+
+static inline
+const struct lttng_kernel_type_variant *lttng_kernel_get_type_variant(const struct lttng_kernel_type_common *type)
+{
+       if (type->type != lttng_kernel_type_variant)
+               return NULL;
+       return container_of(type, const struct lttng_kernel_type_variant, parent);
+}
+
+static inline bool lttng_kernel_type_is_bytewise_integer(const struct lttng_kernel_type_common *type)
+{
+       const struct lttng_kernel_type_integer *type_integer = lttng_kernel_get_type_integer(type);
+
+       if (!type_integer)
+               return false;
+       switch (type_integer->size) {
+       case 8:         /* Fall-through. */
+       case 16:        /* Fall-through. */
+       case 32:        /* Fall-through. */
+       case 64:
+               break;
+       default:
+               return false;
+       }
+       return true;
+}
+
 #endif /* _LTTNG_EVENTS_INTERNAL_H */
This page took 0.024257 seconds and 4 git commands to generate.