X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fust-registry.hpp;h=5d8bdb7cee020407098f78bbce22eab9236fed1f;hb=9d89db29f3bf6c826293350f8f1a8559ec906b24;hp=c438211005bbe9dd78c48ba0410cf0fb2f975075;hpb=97f630d42cd12a475293af66e75a71ab7b490633;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/ust-registry.hpp b/src/bin/lttng-sessiond/ust-registry.hpp index c43821100..5d8bdb7ce 100644 --- a/src/bin/lttng-sessiond/ust-registry.hpp +++ b/src/bin/lttng-sessiond/ust-registry.hpp @@ -47,30 +47,29 @@ class registry_session; namespace details { -template -typename trace::typed_enumeration_type::mapping mapping_from_ust_ctl_entry( - const lttng_ust_ctl_enum_entry& entry) -{ - if (entry.u.extra.options & LTTNG_UST_CTL_UST_ENUM_ENTRY_OPTION_IS_AUTO) { - return {entry.string}; - - } else { - return {entry.string, - {(MappingIntegerType) entry.start.value, - (MappingIntegerType) entry.end.value}}; - } -} - template typename trace::typed_enumeration_type::mappings mappings_from_ust_ctl_entries( const lttng_ust_ctl_enum_entry *in_entries, size_t in_entry_count) { typename trace::typed_enumeration_type::mappings mappings; + MappingIntegerType next_range_begin = 0; for (size_t entry_idx = 0; entry_idx < in_entry_count; entry_idx++) { const auto& entry = in_entries[entry_idx]; - - mappings.emplace_back(mapping_from_ust_ctl_entry(entry)); + MappingIntegerType range_begin, range_end; + + if (entry.u.extra.options & LTTNG_UST_CTL_UST_ENUM_ENTRY_OPTION_IS_AUTO) { + range_begin = range_end = next_range_begin; + } else { + range_begin = (MappingIntegerType) entry.start.value; + range_end = (MappingIntegerType) entry.end.value; + } + + next_range_begin = range_end + 1; + mappings.emplace_back(entry.string, + typename trace::typed_enumeration_type< + MappingIntegerType>::mapping::range_t{ + range_begin, range_end}); } return mappings; @@ -83,6 +82,10 @@ public: registry_enum(std::string name, enum lttng::sessiond::trace::integer_type::signedness signedness); virtual ~registry_enum() = default; + registry_enum(const registry_enum&) = delete; + registry_enum(registry_enum&&) = delete; + registry_enum& operator=(registry_enum&&) = delete; + registry_enum& operator=(const registry_enum&) = delete; std::string name; enum lttng::sessiond::trace::integer_type::signedness signedness; @@ -122,7 +125,7 @@ public: _mappings; protected: - virtual bool _is_equal(const registry_enum& base_other) const noexcept + bool _is_equal(const registry_enum& base_other) const noexcept override { const auto &other = static_cast(base_other);