Cleanup: tsdl: fix misleading indentation
[lttng-tools.git] / src / bin / lttng-sessiond / tsdl-trace-class-visitor.cpp
index 17c4f92c4b8817c55746ae8a4ec3e66e47ccfe82..d240e1fb050837aa65d3e52bc7c4e6c8e0405d7c 100644 (file)
@@ -128,9 +128,10 @@ public:
        {
        }
 
-       std::string& get_description()
+       /* Only call once. */
+       std::string transfer_description()
        {
-               return _description;
+               return std::move(_description);
        }
 
 private:
@@ -146,7 +147,7 @@ private:
                _current_field_name.push(_bypass_identifier_escape ?
                                field.name : escape_tsdl_identifier(field.name));
 
-               field._type->accept(*this);
+               field.get_type().accept(*this);
                _description += " ";
                _description += _current_field_name.top();
                _current_field_name.pop();
@@ -269,31 +270,29 @@ private:
                tsdl_field_visitor integer_visitor{_trace_abi, _indentation_level};
 
                integer_visitor.visit(static_cast<const lst::integer_type&>(type));
-               _description += integer_visitor.get_description() + " {\n";
+               _description += integer_visitor.transfer_description() + " {\n";
 
                const auto mappings_indentation_level = _indentation_level + 1;
 
                bool first_mapping = true;
-               for (const auto& mapping : *type._mappings) {
+               for (const auto& mapping : *type.mappings_) {
                        if (!first_mapping) {
                                _description += ",\n";
                        }
 
                        _description.resize(_description.size() + mappings_indentation_level, '\t');
-                       if (!mapping.range) {
-                               _description += fmt::format("\"{}\"", mapping.name);
-                       } else if (mapping.range->begin == mapping.range->end) {
+                       if (mapping.range.begin == mapping.range.end) {
                                _description += fmt::format(
                                                "\"{mapping_name}\" = {mapping_value}",
                                                fmt::arg("mapping_name", mapping.name),
-                                               fmt::arg("mapping_value", mapping.range->begin));
+                                               fmt::arg("mapping_value", mapping.range.begin));
                        } else {
                                _description += fmt::format(
                                                "\"{mapping_name}\" = {mapping_range_begin} ... {mapping_range_end}",
                                                fmt::arg("mapping_name", mapping.name),
                                                fmt::arg("mapping_range_begin",
-                                                               mapping.range->begin),
-                                               fmt::arg("mapping_range_end", mapping.range->end));
+                                                               mapping.range.begin),
+                                               fmt::arg("mapping_range_end", mapping.range.end));
                        }
 
                        first_mapping = false;
@@ -349,8 +348,8 @@ private:
                type.element_type->accept(*this);
                _type_suffixes.emplace(fmt::format("[{}]",
                                _bypass_identifier_escape ?
-                                               type.length_field_name :
-                                                     escape_tsdl_identifier(type.length_field_name)));
+                                               *(type.length_field_location.elements_.end() - 1) :
+                                                       escape_tsdl_identifier(*(type.length_field_location.elements_.end() - 1))));
        }
 
        virtual void visit(const lst::static_length_blob_type& type) override final
@@ -372,7 +371,7 @@ private:
                                _trace_abi.byte_order, 8, lst::integer_type::signedness::UNSIGNED,
                                lst::integer_type::base::HEXADECIMAL);
                const auto array = lttng::make_unique<lst::dynamic_length_array_type>(
-                               type.alignment, std::move(uint8_element), type.length_field_name);
+                               type.alignment, std::move(uint8_element), type.length_field_location);
 
                visit(*array);
        }
@@ -394,7 +393,7 @@ private:
 
                const auto previous_bypass_identifier_escape = _bypass_identifier_escape;
                _bypass_identifier_escape = false;
-               for (const auto& field : type._fields) {
+               for (const auto& field : type.fields_) {
                        _description += "\n";
                        _description.resize(_description.size() + _indentation_level, '\t');
                        field->accept(*this);
@@ -403,7 +402,7 @@ private:
                _bypass_identifier_escape = previous_bypass_identifier_escape;
 
                _indentation_level--;
-               if (type._fields.size() != 0) {
+               if (type.fields_.size() != 0) {
                        _description += "\n";
                        _description.resize(_description.size() + _indentation_level, '\t');
                }
@@ -411,7 +410,8 @@ private:
                _description += "}";
        }
 
-       virtual void visit(const lst::variant_type& type) override final
+       template <class MappingIntegerType>
+       void visit_variant(const lst::variant_type<MappingIntegerType>& type)
        {
                if (type.alignment != 0) {
                        LTTNG_ASSERT(_current_field_name.size() > 0);
@@ -425,8 +425,8 @@ private:
                _indentation_level++;
                _description += fmt::format("variant <{}> {{\n",
                                _bypass_identifier_escape ?
-                                               type.tag_name :
-                                                     escape_tsdl_identifier(type.tag_name));
+                                               *(type.selector_field_location.elements_.end() - 1) :
+                                                       escape_tsdl_identifier(*(type.selector_field_location.elements_.end() - 1)));
 
                /*
                 * The CTF 1.8 specification only recommends that implementations ignore
@@ -436,10 +436,10 @@ private:
                 */
                const auto previous_bypass_identifier_escape = _bypass_identifier_escape;
                _bypass_identifier_escape = true;
-               for (const auto& field : type._choices) {
+               for (const auto& field : type.choices_) {
                        _description.resize(_description.size() + _indentation_level, '\t');
-                       field->accept(*this);
-                       _description += fmt::format("\n", field->name);
+                       field.second->accept(*this);
+                       _description += fmt::format(" {};\n", field.first.name);
                }
 
                _bypass_identifier_escape = previous_bypass_identifier_escape;
@@ -449,6 +449,16 @@ private:
                _description += "}";
        }
 
+       virtual void visit(const lst::variant_type<lst::signed_enumeration_type::mapping::range_t::range_integer_t>& type) override final
+       {
+               visit_variant(type);
+       }
+
+       virtual void visit(const lst::variant_type<lst::unsigned_enumeration_type::mapping::range_t::range_integer_t>& type) override final
+       {
+               visit_variant(type);
+       }
+
        lst::type::cuptr create_character_type(enum lst::string_type::encoding encoding)
        {
                _current_integer_encoding_override = encoding;
@@ -477,7 +487,7 @@ private:
                 */
                const auto char_sequence = lttng::make_unique<lst::dynamic_length_array_type>(
                                type.alignment, create_character_type(type.encoding_),
-                               type.length_field_name);
+                               type.length_field_location);
 
                visit(*char_sequence);
        }
@@ -502,6 +512,34 @@ private:
        bool _bypass_identifier_escape;
        const char *_default_clock_class_name;
 };
+
+class tsdl_trace_environment_visitor : public lst::trace_class_environment_visitor {
+public:
+       tsdl_trace_environment_visitor() : _environment{"env {\n"}
+       {
+       }
+
+       virtual void visit(const lst::environment_field<int64_t>& field) override
+       {
+               _environment += fmt::format("   {} = {};\n", field.name, field.value);
+       }
+
+       virtual void visit(const lst::environment_field<const char *>& field) override
+       {
+               _environment += fmt::format("   {} = \"{}\";\n", field.name,
+                               escape_tsdl_env_string_value(field.value));
+       }
+
+       /* Only call once. */
+       std::string transfer_description()
+       {
+               _environment += "};\n\n";
+               return std::move(_environment);
+       }
+
+private:
+       std::string _environment;
+};
 } /* namespace */
 
 tsdl::trace_class_visitor::trace_class_visitor(const lst::abi& trace_abi,
@@ -544,10 +582,14 @@ void tsdl::trace_class_visitor::visit(const lttng::sessiond::trace::trace_class&
                        fmt::arg("uuid", lttng::utils::uuid_to_str(trace_class.uuid)),
                        fmt::arg("byte_order",
                                        trace_class.abi.byte_order == lst::byte_order::BIG_ENDIAN_ ? "be" : "le"),
-                       fmt::arg("packet_header_layout", packet_header_visitor.get_description()));
+                       fmt::arg("packet_header_layout", packet_header_visitor.transfer_description()));
 
        /* Declare trace scope and type aliases. */
        append_metadata_fragment(trace_class_tsdl);
+
+       tsdl_trace_environment_visitor environment_visitor;
+       trace_class.accept(environment_visitor);
+       append_metadata_fragment(environment_visitor.transfer_description());
 }
 
 void tsdl::trace_class_visitor::visit(const lttng::sessiond::trace::clock_class& clock_class)
@@ -589,7 +631,7 @@ void tsdl::trace_class_visitor::visit(const lttng::sessiond::trace::stream_class
 
                event_header->accept(event_header_visitor);
                stream_class_str += fmt::format("       event.header := {};\n",
-                               event_header_visitor.get_description());
+                               event_header_visitor.transfer_description());
        }
 
        const auto *packet_context = stream_class.get_packet_context();
@@ -599,7 +641,7 @@ void tsdl::trace_class_visitor::visit(const lttng::sessiond::trace::stream_class
 
                packet_context->accept(packet_context_visitor);
                stream_class_str += fmt::format("       packet.context := {};\n",
-                               packet_context_visitor.get_description());
+                               packet_context_visitor.transfer_description());
        }
 
        const auto *event_context = stream_class.get_event_context();
@@ -608,7 +650,7 @@ void tsdl::trace_class_visitor::visit(const lttng::sessiond::trace::stream_class
 
                event_context->accept(event_context_visitor);
                stream_class_str += fmt::format("       event.context := {};\n",
-                               event_context_visitor.get_description());
+                               event_context_visitor.transfer_description());
        }
 
        stream_class_str += "};\n\n";
@@ -638,32 +680,7 @@ void tsdl::trace_class_visitor::visit(const lttng::sessiond::trace::event_class&
        event_class.payload->accept(static_cast<lst::type_visitor&>(payload_visitor));
 
        event_class_str += fmt::format(
-                       "       fields := {};\n}};\n\n", payload_visitor.get_description());
+                       "       fields := {};\n}};\n\n", payload_visitor.transfer_description());
 
        append_metadata_fragment(event_class_str);
 }
-
-void tsdl::trace_class_visitor::environment_begin()
-{
-       _environment += "env {\n";
-}
-
-void tsdl::trace_class_visitor::visit(
-               const lttng::sessiond::trace::environment_field<int64_t>& field)
-{
-       _environment += fmt::format("   {} = {};\n", field.name, field.value);
-}
-
-void tsdl::trace_class_visitor::visit(
-               const lttng::sessiond::trace::environment_field<const char *>& field)
-{
-       _environment += fmt::format(
-                       "       {} = \"{}\";\n", field.name, escape_tsdl_env_string_value(field.value));
-}
-
-void tsdl::trace_class_visitor::environment_end()
-{
-       _environment += "};\n\n";
-       append_metadata_fragment(_environment);
-       _environment.clear();
-}
This page took 0.027001 seconds and 4 git commands to generate.