projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Run clang-format on the whole tree
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
field.cpp
diff --git
a/src/bin/lttng-sessiond/field.cpp
b/src/bin/lttng-sessiond/field.cpp
index df51df488498589f9f4524f6025cce8a4f2366a4..5a0c584f22813197ac9a7e3686aee29e6536fa75 100644
(file)
--- a/
src/bin/lttng-sessiond/field.cpp
+++ b/
src/bin/lttng-sessiond/field.cpp
@@
-22,27
+22,28
@@
bool fields_are_equal(const FieldTypeSet& a, const FieldTypeSet& b)
return false;
}
return false;
}
- return std::equal(a.cbegin(), a.cend(), b.cbegin(),
- [](typename FieldTypeSet::const_reference field_a,
- typename FieldTypeSet::const_reference field_b) {
- return *field_a == *field_b;
- });
+ return std::equal(a.cbegin(),
+ a.cend(),
+ b.cbegin(),
+ [](typename FieldTypeSet::const_reference field_a,
+ typename FieldTypeSet::const_reference field_b) {
+ return *field_a == *field_b;
+ });
}
} /* namespace */
lst::field_location::field_location(lst::field_location::root in_lookup_root,
}
} /* namespace */
lst::field_location::field_location(lst::field_location::root in_lookup_root,
- lst::field_location::elements in_elements) :
- root_{
in_lookup_root}, elements_{std::move(in_elements)
}
+
lst::field_location::elements in_elements) :
+ root_{
in_lookup_root }, elements_{ std::move(in_elements)
}
{
}
bool lst::field_location::operator==(const lst::field_location& other) const noexcept
{
{
}
bool lst::field_location::operator==(const lst::field_location& other) const noexcept
{
- return root_ == other.root_ &&
- elements_ == other.elements_;
+ return root_ == other.root_ && elements_ == other.elements_;
}
}
-lst::type::type(unsigned int in_alignment) : alignment{
in_alignment
}
+lst::type::type(unsigned int in_alignment) : alignment{
in_alignment
}
{
}
{
}
@@
-52,8
+53,7
@@
lst::type::~type()
bool lst::type::operator==(const lst::type& other) const noexcept
{
bool lst::type::operator==(const lst::type& other) const noexcept
{
- return typeid(*this) == typeid(other) &&
- alignment == other.alignment &&
+ return typeid(*this) == typeid(other) && alignment == other.alignment &&
/* defer to concrete type comparison */
this->_is_equal(other);
}
/* defer to concrete type comparison */
this->_is_equal(other);
}
@@
-64,8
+64,12
@@
bool lst::type::operator!=(const lst::type& other) const noexcept
}
lst::field::field(std::string in_name, lst::type::cuptr in_type) :
}
lst::field::field(std::string in_name, lst::type::cuptr in_type) :
- name{
std::move(in_name)}, _type{std::move(in_type)
}
+ name{
std::move(in_name) }, _type{ std::move(in_type)
}
{
{
+ if (!_type) {
+ LTTNG_THROW_ERROR(
+ fmt::format("Invalid type used to create field: field name = `{}`", name));
+ }
}
void lst::field::accept(lst::field_visitor& visitor) const
}
void lst::field::accept(lst::field_visitor& visitor) const
@@
-78,29
+82,49
@@
bool lst::field::operator==(const lst::field& other) const noexcept
return name == other.name && *_type == *other._type;
}
return name == other.name && *_type == *other._type;
}
+lst::type::cuptr lst::field::move_type() noexcept
+{
+ return std::move(_type);
+}
+
+const lst::type& lst::field::get_type() const
+{
+ if (_type) {
+ return *_type;
+ } else {
+ LTTNG_THROW_ERROR(fmt::format(
+ "Invalid attempt to access field type after transfer: field name = `{}`",
+ name));
+ }
+}
+
lst::integer_type::integer_type(unsigned int in_alignment,
lst::integer_type::integer_type(unsigned int in_alignment,
- enum lst::byte_order in_byte_order,
- unsigned int in_size,
- enum lst::integer_type::signedness in_signedness,
- enum lst::integer_type::base in_base,
- roles in_roles) :
+
enum lst::byte_order in_byte_order,
+
unsigned int in_size,
+
enum lst::integer_type::signedness in_signedness,
+
enum lst::integer_type::base in_base,
+
roles in_roles) :
type(in_alignment),
type(in_alignment),
- byte_order{in_byte_order},
- size{in_size},
- signedness_{in_signedness},
- base_{in_base},
- roles_{std::move(in_roles)}
+ byte_order{ in_byte_order },
+ size{ in_size },
+ signedness_{ in_signedness },
+ base_{ in_base },
+ roles_{ std::move(in_roles) }
+{
+}
+
+lst::type::cuptr lst::integer_type::copy() const
{
{
+ return lttng::make_unique<integer_type>(
+ alignment, byte_order, size, signedness_, base_, roles_);
}
}
-bool lst::integer_type::_is_equal(const type
&
base_other) const noexcept
+bool lst::integer_type::_is_equal(const type
&
base_other) const noexcept
{
const auto& other = static_cast<decltype(*this)&>(base_other);
{
const auto& other = static_cast<decltype(*this)&>(base_other);
- return this->byte_order == other.byte_order &&
- this->size == other.size &&
- this->signedness_ == other.signedness_ &&
- this->base_ == other.base_ &&
+ return this->byte_order == other.byte_order && this->size == other.size &&
+ this->signedness_ == other.signedness_ && this->base_ == other.base_ &&
this->roles_ == other.roles_;
}
this->roles_ == other.roles_;
}
@@
-119,30
+143,35
@@
lst::byte_order lst::type::reverse_byte_order(lst::byte_order byte_order) noexce
}
lst::floating_point_type::floating_point_type(unsigned int in_alignment,
}
lst::floating_point_type::floating_point_type(unsigned int in_alignment,
- lst::byte_order in_byte_order,
- unsigned int in_exponent_digits,
- unsigned int in_mantissa_digits) :
+
lst::byte_order in_byte_order,
+
unsigned int in_exponent_digits,
+
unsigned int in_mantissa_digits) :
type(in_alignment),
byte_order(in_byte_order),
type(in_alignment),
byte_order(in_byte_order),
- exponent_digits{
in_exponent_digits
},
+ exponent_digits{
in_exponent_digits
},
mantissa_digits(in_mantissa_digits)
{
/* Allowed (exponent, mantissa) pairs. */
static const std::set<std::pair<unsigned int, unsigned int>> allowed_pairs{
mantissa_digits(in_mantissa_digits)
{
/* Allowed (exponent, mantissa) pairs. */
static const std::set<std::pair<unsigned int, unsigned int>> allowed_pairs{
-
{5, 11
}, /* binary16 */
-
{8, 24
}, /* binary32 */
-
{11, 53
}, /* binary64 */
-
{15, 113
}, /* binary128 */
+
{ 5, 11
}, /* binary16 */
+
{ 8, 24
}, /* binary32 */
+
{ 11, 53
}, /* binary64 */
+
{ 15, 113
}, /* binary128 */
};
};
- if (allowed_pairs.find({
exponent_digits, mantissa_digits
}) != allowed_pairs.end()) {
+ if (allowed_pairs.find({
exponent_digits, mantissa_digits
}) != allowed_pairs.end()) {
/* mantissa and exponent digits is a valid pair. */
return;
}
/* mantissa and exponent digits is a valid pair. */
return;
}
- LTTNG_THROW_INVALID_ARGUMENT_ERROR(
- fmt::format("Invalid exponent/mantissa values provided while creating {}",
- typeid(*this)));
+ LTTNG_THROW_INVALID_ARGUMENT_ERROR(fmt::format(
+ "Invalid exponent/mantissa values provided while creating {}", typeid(*this)));
+}
+
+lst::type::cuptr lst::floating_point_type::copy() const
+{
+ return lttng::make_unique<floating_point_type>(
+ alignment, byte_order, exponent_digits, mantissa_digits);
}
void lst::floating_point_type::accept(type_visitor& visitor) const
}
void lst::floating_point_type::accept(type_visitor& visitor) const
@@
-155,36
+184,51
@@
bool lst::floating_point_type::_is_equal(const type& base_other) const noexcept
const auto& other = static_cast<decltype(*this)&>(base_other);
return this->byte_order == other.byte_order &&
const auto& other = static_cast<decltype(*this)&>(base_other);
return this->byte_order == other.byte_order &&
-
this->exponent_digits == other.exponent_digits &&
-
this->mantissa_digits == other.mantissa_digits;
+ this->exponent_digits == other.exponent_digits &&
+ this->mantissa_digits == other.mantissa_digits;
}
lst::enumeration_type::enumeration_type(unsigned int in_alignment,
}
lst::enumeration_type::enumeration_type(unsigned int in_alignment,
- enum lst::byte_order in_byte_order,
- unsigned int in_size,
- enum signedness in_signedness,
- enum base in_base,
- lst::integer_type::roles in_roles) :
- integer_type(in_alignment,
- in_byte_order,
- in_size,
- in_signedness,
- in_base,
- std::move(in_roles))
+ enum lst::byte_order in_byte_order,
+ unsigned int in_size,
+ enum signedness in_signedness,
+ enum base in_base,
+ lst::integer_type::roles in_roles) :
+ integer_type(
+ in_alignment, in_byte_order, in_size, in_signedness, in_base, std::move(in_roles))
{
}
{
}
+/*
+ * Due to a bug in g++ < 7.1, these specializations must be enclosed in the namespaces
+ * rather than using the usual `namespace::namespace::function` notation:
+ * see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480.
+ */
namespace lttng {
namespace sessiond {
namespace trace {
template <>
namespace lttng {
namespace sessiond {
namespace trace {
template <>
-void lst::signed_enumeration_type::accept(type_visitor& visitor) const
+void signed_enumeration_type::accept(type_visitor& visitor) const
+{
+ visitor.visit(*this);
+}
+
+template <>
+void unsigned_enumeration_type::accept(type_visitor& visitor) const
{
visitor.visit(*this);
}
template <>
{
visitor.visit(*this);
}
template <>
-void lst::unsigned_enumeration_type::accept(type_visitor& visitor) const
+void variant_type<lst::signed_enumeration_type::mapping::range_t::range_integer_t>::accept(
+ lst::type_visitor& visitor) const
+{
+ visitor.visit(*this);
+}
+
+template <>
+void variant_type<lst::unsigned_enumeration_type::mapping::range_t::range_integer_t>::accept(
+ lst::type_visitor& visitor) const
{
visitor.visit(*this);
}
{
visitor.visit(*this);
}
@@
-193,7
+237,7
@@
void lst::unsigned_enumeration_type::accept(type_visitor& visitor) const
} /* namespace lttng */
lst::array_type::array_type(unsigned int in_alignment, type::cuptr in_element_type) :
} /* namespace lttng */
lst::array_type::array_type(unsigned int in_alignment, type::cuptr in_element_type) :
- type(in_alignment), element_type{
std::move(in_element_type)
}
+ type(in_alignment), element_type{
std::move(in_element_type)
}
{
}
{
}
@@
-205,10
+249,9
@@
bool lst::array_type::_is_equal(const type& base_other) const noexcept
}
lst::static_length_array_type::static_length_array_type(unsigned int in_alignment,
}
lst::static_length_array_type::static_length_array_type(unsigned int in_alignment,
- type::cuptr in_element_type,
- uint64_t in_length) :
- array_type(in_alignment, std::move(in_element_type)),
- length{in_length}
+ type::cuptr in_element_type,
+ uint64_t in_length) :
+ array_type(in_alignment, std::move(in_element_type)), length{ in_length }
{
}
{
}
@@
-219,16
+262,23
@@
bool lst::static_length_array_type::_is_equal(const type& base_other) const noex
return array_type::_is_equal(base_other) && this->length == other.length;
}
return array_type::_is_equal(base_other) && this->length == other.length;
}
+lst::type::cuptr lst::static_length_array_type::copy() const
+{
+ return lttng::make_unique<static_length_array_type>(
+ alignment, element_type->copy(), length);
+}
+
void lst::static_length_array_type::accept(type_visitor& visitor) const
{
visitor.visit(*this);
}
void lst::static_length_array_type::accept(type_visitor& visitor) const
{
visitor.visit(*this);
}
-lst::dynamic_length_array_type::dynamic_length_array_type(unsigned int in_alignment,
- type::cuptr in_element_type,
- lst::field_location in_length_field_location) :
+lst::dynamic_length_array_type::dynamic_length_array_type(
+ unsigned int in_alignment,
+ type::cuptr in_element_type,
+ lst::field_location in_length_field_location) :
array_type(in_alignment, std::move(in_element_type)),
array_type(in_alignment, std::move(in_element_type)),
- length_field_location{
std::move(in_length_field_location)
}
+ length_field_location{
std::move(in_length_field_location)
}
{
}
{
}
@@
-237,7
+287,13
@@
bool lst::dynamic_length_array_type::_is_equal(const type& base_other) const noe
const auto& other = static_cast<decltype(*this)&>(base_other);
return array_type::_is_equal(base_other) &&
const auto& other = static_cast<decltype(*this)&>(base_other);
return array_type::_is_equal(base_other) &&
- this->length_field_location == other.length_field_location;
+ this->length_field_location == other.length_field_location;
+}
+
+lst::type::cuptr lst::dynamic_length_array_type::copy() const
+{
+ return lttng::make_unique<dynamic_length_array_type>(
+ alignment, element_type->copy(), length_field_location);
}
void lst::dynamic_length_array_type::accept(type_visitor& visitor) const
}
void lst::dynamic_length_array_type::accept(type_visitor& visitor) const
@@
-245,9
+301,10
@@
void lst::dynamic_length_array_type::accept(type_visitor& visitor) const
visitor.visit(*this);
}
visitor.visit(*this);
}
-lst::static_length_blob_type::static_length_blob_type(
- unsigned int in_alignment, uint64_t in_length_bytes, roles in_roles) :
- type(in_alignment), length_bytes{in_length_bytes}, roles_{std::move(in_roles)}
+lst::static_length_blob_type::static_length_blob_type(unsigned int in_alignment,
+ uint64_t in_length_bytes,
+ roles in_roles) :
+ type(in_alignment), length_bytes{ in_length_bytes }, roles_{ std::move(in_roles) }
{
}
{
}
@@
-258,14
+315,19
@@
bool lst::static_length_blob_type::_is_equal(const type& base_other) const noexc
return length_bytes == other.length_bytes && roles_ == other.roles_;
}
return length_bytes == other.length_bytes && roles_ == other.roles_;
}
+lst::type::cuptr lst::static_length_blob_type::copy() const
+{
+ return lttng::make_unique<static_length_blob_type>(alignment, length_bytes, roles_);
+}
+
void lst::static_length_blob_type::accept(type_visitor& visitor) const
{
visitor.visit(*this);
}
lst::dynamic_length_blob_type::dynamic_length_blob_type(
void lst::static_length_blob_type::accept(type_visitor& visitor) const
{
visitor.visit(*this);
}
lst::dynamic_length_blob_type::dynamic_length_blob_type(
-
unsigned int in_alignment, lst::field_location in_length_field_location) :
- type(in_alignment), length_field_location{
std::move(in_length_field_location)
}
+ unsigned int in_alignment, lst::field_location in_length_field_location) :
+ type(in_alignment), length_field_location{
std::move(in_length_field_location)
}
{
}
{
}
@@
-276,13
+338,18
@@
bool lst::dynamic_length_blob_type::_is_equal(const type& base_other) const noex
return length_field_location == other.length_field_location;
}
return length_field_location == other.length_field_location;
}
+lst::type::cuptr lst::dynamic_length_blob_type::copy() const
+{
+ return lttng::make_unique<dynamic_length_blob_type>(alignment, length_field_location);
+}
+
void lst::dynamic_length_blob_type::accept(type_visitor& visitor) const
{
visitor.visit(*this);
}
lst::string_type::string_type(unsigned int in_alignment, enum encoding in_encoding) :
void lst::dynamic_length_blob_type::accept(type_visitor& visitor) const
{
visitor.visit(*this);
}
lst::string_type::string_type(unsigned int in_alignment, enum encoding in_encoding) :
- type(in_alignment), encoding_{
in_encoding
}
+ type(in_alignment), encoding_{
in_encoding
}
{
}
{
}
@@
-293,9
+360,10
@@
bool lst::string_type::_is_equal(const type& base_other) const noexcept
return this->encoding_ == other.encoding_;
}
return this->encoding_ == other.encoding_;
}
-lst::static_length_string_type::static_length_string_type(
- unsigned int in_alignment, enum encoding in_encoding, uint64_t in_length) :
- string_type(in_alignment, in_encoding), length{in_length}
+lst::static_length_string_type::static_length_string_type(unsigned int in_alignment,
+ enum encoding in_encoding,
+ uint64_t in_length) :
+ string_type(in_alignment, in_encoding), length{ in_length }
{
}
{
}
@@
-306,16
+374,22
@@
bool lst::static_length_string_type::_is_equal(const type& base_other) const noe
return string_type::_is_equal(base_other) && this->length == other.length;
}
return string_type::_is_equal(base_other) && this->length == other.length;
}
+lst::type::cuptr lst::static_length_string_type::copy() const
+{
+ return lttng::make_unique<static_length_string_type>(alignment, encoding_, length);
+}
+
void lst::static_length_string_type::accept(type_visitor& visitor) const
{
visitor.visit(*this);
}
void lst::static_length_string_type::accept(type_visitor& visitor) const
{
visitor.visit(*this);
}
-lst::dynamic_length_string_type::dynamic_length_string_type(unsigned int in_alignment,
- enum encoding in_encoding,
- field_location in_length_field_location) :
+lst::dynamic_length_string_type::dynamic_length_string_type(
+ unsigned int in_alignment,
+ enum encoding in_encoding,
+ field_location in_length_field_location) :
string_type(in_alignment, in_encoding),
string_type(in_alignment, in_encoding),
- length_field_location{
std::move(in_length_field_location)
}
+ length_field_location{
std::move(in_length_field_location)
}
{
}
{
}
@@
-324,7
+398,13
@@
bool lst::dynamic_length_string_type::_is_equal(const type& base_other) const no
const auto& other = static_cast<decltype(*this)&>(base_other);
return string_type::_is_equal(base_other) &&
const auto& other = static_cast<decltype(*this)&>(base_other);
return string_type::_is_equal(base_other) &&
- this->length_field_location == other.length_field_location;
+ this->length_field_location == other.length_field_location;
+}
+
+lst::type::cuptr lst::dynamic_length_string_type::copy() const
+{
+ return lttng::make_unique<dynamic_length_string_type>(
+ alignment, encoding_, length_field_location);
}
void lst::dynamic_length_string_type::accept(type_visitor& visitor) const
}
void lst::dynamic_length_string_type::accept(type_visitor& visitor) const
@@
-333,54
+413,47
@@
void lst::dynamic_length_string_type::accept(type_visitor& visitor) const
}
lst::null_terminated_string_type::null_terminated_string_type(unsigned int in_alignment,
}
lst::null_terminated_string_type::null_terminated_string_type(unsigned int in_alignment,
- enum encoding in_encoding) :
+
enum encoding in_encoding) :
string_type(in_alignment, in_encoding)
{
}
string_type(in_alignment, in_encoding)
{
}
+lst::type::cuptr lst::null_terminated_string_type::copy() const
+{
+ return lttng::make_unique<null_terminated_string_type>(alignment, encoding_);
+}
+
void lst::null_terminated_string_type::accept(type_visitor& visitor) const
{
visitor.visit(*this);
}
lst::structure_type::structure_type(unsigned int in_alignment, fields in_fields) :
void lst::null_terminated_string_type::accept(type_visitor& visitor) const
{
visitor.visit(*this);
}
lst::structure_type::structure_type(unsigned int in_alignment, fields in_fields) :
- type(in_alignment),
_fields{std::move(in_fields)
}
+ type(in_alignment),
fields_{ std::move(in_fields)
}
{
}
bool lst::structure_type::_is_equal(const type& base_other) const noexcept
{
{
}
bool lst::structure_type::_is_equal(const type& base_other) const noexcept
{
- const auto
&
other = static_cast<decltype(*this)&>(base_other);
+ const auto
&
other = static_cast<decltype(*this)&>(base_other);
- return fields_are_equal(this->
_fields, other._fields
);
+ return fields_are_equal(this->
fields_, other.fields_
);
}
}
-
void lst::structure_type::accept(type_visitor& visitor
) const
+
lst::type::cuptr lst::structure_type::copy(
) const
{
{
- visitor.visit(*this);
-}
+ structure_type::fields copy_of_fields;
-lst::variant_type::variant_type(unsigned int in_alignment,
- field_location in_selector_field_location,
- choices in_choices) :
- type(in_alignment),
- selector_field_location{std::move(in_selector_field_location)},
- _choices
-{std::move(in_choices)}
-{
-}
-
-bool lst::variant_type::_is_equal(const type& base_other) const noexcept
-{
- const auto &other = static_cast<decltype(*this)&>(base_other);
+ copy_of_fields.reserve(fields_.size());
+ for (const auto& field : fields_) {
+ copy_of_fields.emplace_back(
+ lttng::make_unique<lst::field>(field->name, field->get_type().copy()));
+ }
- return this->selector_field_location == other.selector_field_location &&
- fields_are_equal(this->_choices
-, other._choices
-);
+ return lttng::make_unique<structure_type>(alignment, std::move(copy_of_fields));
}
}
-void lst::
variant
_type::accept(type_visitor& visitor) const
+void lst::
structure
_type::accept(type_visitor& visitor) const
{
visitor.visit(*this);
}
{
visitor.visit(*this);
}
This page took
0.02892 seconds
and
4
git commands to generate.