_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();
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
_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);
}
_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);
_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
_bypass_identifier_escape = true;
for (const auto& field : type._choices) {
_description.resize(_description.size() + _indentation_level, '\t');
- field->accept(*this);
+ field.second->accept(*this);
_description += "\n";
}
_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;
*/
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);
}
fmt::arg("packet_header_layout", packet_header_visitor.get_description()));
/* Declare trace scope and type aliases. */
- append_metadata_fragment(std::move(trace_class_tsdl));
+ append_metadata_fragment(trace_class_tsdl);
}
void tsdl::trace_class_visitor::visit(const lttng::sessiond::trace::clock_class& clock_class)
fmt::arg("frequency", clock_class.frequency),
fmt::arg("offset", clock_class.offset));
- append_metadata_fragment(std::move(clock_class_str));
+ append_metadata_fragment(clock_class_str);
}
void tsdl::trace_class_visitor::visit(const lttng::sessiond::trace::stream_class& stream_class)