Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Change-Id: Ic78e9a06ec86b3a1749c1763698408964f34ec27
Reviewed-on: https://review.lttng.org/c/babeltrace/+/7323
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/7290
CI-Build: Philippe Proulx <eeppeliteloop@gmail.com>
Tested-by: jenkins <jenkins@lttng.org>
#include "internal/shared-obj.hpp"
#include "cpp-common/optional.hpp"
#include "cpp-common/string_view.hpp"
#include "internal/shared-obj.hpp"
#include "cpp-common/optional.hpp"
#include "cpp-common/string_view.hpp"
+#include "common-iter.hpp"
#include "lib-error.hpp"
#include "integer-range-set.hpp"
#include "field-path.hpp"
#include "lib-error.hpp"
#include "integer-range-set.hpp"
#include "field-path.hpp"
public:
using Shared = internal::SharedFieldClass<CommonStructureFieldClass<LibObjT>, LibObjT>;
public:
using Shared = internal::SharedFieldClass<CommonStructureFieldClass<LibObjT>, LibObjT>;
using Member =
typename std::conditional<std::is_const<LibObjT>::value, ConstStructureFieldClassMember,
StructureFieldClassMember>::type;
using Member =
typename std::conditional<std::is_const<LibObjT>::value, ConstStructureFieldClassMember,
StructureFieldClassMember>::type;
+ using Iterator = CommonIterator<CommonStructureFieldClass<LibObjT>, Member>;
+
explicit CommonStructureFieldClass(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonFieldClass {libObjPtr}
{
explicit CommonStructureFieldClass(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonFieldClass {libObjPtr}
{
return bt_field_class_structure_get_member_count(this->_libObjPtr());
}
return bt_field_class_structure_get_member_count(this->_libObjPtr());
}
+ Iterator begin() const noexcept
+ {
+ return Iterator {*this, 0};
+ }
+
+ Iterator end() const noexcept
+ {
+ return Iterator {*this, this->size()};
+ }
+
ConstStructureFieldClassMember operator[](const std::uint64_t index) const noexcept
{
return ConstStructureFieldClassMember {
ConstStructureFieldClassMember operator[](const std::uint64_t index) const noexcept
{
return ConstStructureFieldClassMember {
typename std::conditional<std::is_const<LibObjT>::value, ConstVariantFieldClassOption,
VariantFieldClassOption>::type;
typename std::conditional<std::is_const<LibObjT>::value, ConstVariantFieldClassOption,
VariantFieldClassOption>::type;
+ using Iterator = CommonIterator<CommonVariantFieldClass<LibObjT>, Option>;
+
explicit CommonVariantFieldClass(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonFieldClass {libObjPtr}
{
explicit CommonVariantFieldClass(const _LibObjPtr libObjPtr) noexcept :
_ThisCommonFieldClass {libObjPtr}
{
return bt_field_class_variant_get_option_count(this->_libObjPtr());
}
return bt_field_class_variant_get_option_count(this->_libObjPtr());
}
+ Iterator begin() const noexcept
+ {
+ return Iterator {*this, 0};
+ }
+
+ Iterator end() const noexcept
+ {
+ return Iterator {*this, this->size()};
+ }
+
ConstVariantFieldClassOption operator[](const std::uint64_t index) const noexcept
{
return ConstVariantFieldClassOption {
ConstVariantFieldClassOption operator[](const std::uint64_t index) const noexcept
{
return ConstVariantFieldClassOption {