Visibility hidden by default
[babeltrace.git] / src / plugins / text / pretty / pretty.h
index 2df935402de31af7fd4fb8af7fc701965f7e835b..d9f383b1d6f23550f75cce8b2d3970e6f5a7cc1d 100644 (file)
 #include "common/macros.h"
 #include <babeltrace2/babeltrace.h>
 
+/*
+ * `bt_field_*_enumeration` are backed by 64 bits integers so the maximun
+ * number of bitflags in any enumeration is 64.
+ */
+#define ENUMERATION_MAX_BITFLAGS_COUNT (sizeof(uint64_t) * 8)
+
 enum pretty_default {
        PRETTY_DEFAULT_UNSET,
        PRETTY_DEFAULT_SHOW,
@@ -37,6 +43,7 @@ struct pretty_options {
        bool print_payload_field_names;
 
        bool print_delta_field;
+       bool print_enum_flags;
        bool print_loglevel_field;
        bool print_emf_field;
        bool print_callsite_field;
@@ -72,37 +79,42 @@ struct pretty_component {
 
        bool negative_timestamp_warning_done;
 
+       /*
+        * For each bit of the integer backing the enumeration we have a list
+        * (GPtrArray) of labels (char *) for that bit.
+        *
+        * Allocate all label arrays during the initialization of the component
+        * and reuse the same set of arrays for all enumerations. This prevents
+        * allocation and deallocation everytime the component encounters a
+        * enumeration field. Allocating and deallocating that often could
+        * severely impact performance.
+        */
+       GPtrArray *enum_bit_labels[ENUMERATION_MAX_BITFLAGS_COUNT];
+
        bt_logging_level log_level;
        bt_self_component *self_comp;
 };
 
-BT_HIDDEN
 bt_component_class_initialize_method_status pretty_init(
                bt_self_component_sink *component,
                bt_self_component_sink_configuration *config,
                const bt_value *params,
                void *init_method_data);
 
-BT_HIDDEN
 bt_component_class_sink_consume_method_status pretty_consume(
                bt_self_component_sink *component);
 
-BT_HIDDEN
 bt_component_class_sink_graph_is_configured_method_status pretty_graph_is_configured(
                bt_self_component_sink *component);
 
-BT_HIDDEN
 void pretty_finalize(bt_self_component_sink *component);
 
-BT_HIDDEN
 int pretty_print_event(struct pretty_component *pretty,
                const bt_message *event_msg);
 
-BT_HIDDEN
 int pretty_print_discarded_items(struct pretty_component *pretty,
                const bt_message *msg);
 
-BT_HIDDEN
 void pretty_print_init(void);
 
 #endif /* BABELTRACE_PLUGIN_TEXT_PRETTY_PRETTY_H */
This page took 0.030066 seconds and 4 git commands to generate.