X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fplugins%2Ftext%2Fpretty%2Fpretty.h;h=b73f33455767fb0c93c80631b48c10ad6d40ac10;hb=198e791169e07ba1717c22dd3ce38f39caee8872;hp=cffe7ca7d237ee4ea28c3458c2d59e995ab0b7a5;hpb=2f84c7be554aebca849861b481241a7b17dd1a8a;p=babeltrace.git diff --git a/src/plugins/text/pretty/pretty.h b/src/plugins/text/pretty/pretty.h index cffe7ca7..b73f3345 100644 --- a/src/plugins/text/pretty/pretty.h +++ b/src/plugins/text/pretty/pretty.h @@ -1,36 +1,24 @@ -#ifndef BABELTRACE_PLUGIN_TEXT_PRETTY_PRETTY_H -#define BABELTRACE_PLUGIN_TEXT_PRETTY_PRETTY_H - /* - * Copyright 2016 Jérémie Galarneau + * SPDX-License-Identifier: MIT * - * Author: Jérémie Galarneau - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Copyright 2016 Jérémie Galarneau */ +#ifndef BABELTRACE_PLUGIN_TEXT_PRETTY_PRETTY_H +#define BABELTRACE_PLUGIN_TEXT_PRETTY_PRETTY_H + #include #include #include #include "common/macros.h" #include +/* + * `bt_field_*_enumeration` are backed by 64 bits integers so the maximum + * 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, @@ -55,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; @@ -74,13 +63,12 @@ struct pretty_options { struct pretty_component { struct pretty_options options; - bt_self_component_port_input_message_iterator *iterator; + bt_message_iterator *iterator; FILE *out, *err; int depth; /* nesting, used for tabulation alignment. */ bool start_line; GString *string; GString *tmp_string; - bt_value *plugin_opt_map; /* Temporary parameter map. */ bool use_colors; uint64_t last_cycles_timestamp; @@ -90,30 +78,43 @@ struct pretty_component { uint64_t delta_real_timestamp; 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_init_method_status pretty_init( - bt_self_component_sink *component, const bt_value *params, +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); +void pretty_print_init(void); + #endif /* BABELTRACE_PLUGIN_TEXT_PRETTY_PRETTY_H */