X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=src%2Fcpp-common%2Fbt2%2Ffield-class.hpp;h=c6c4d690ff7870e93b26ee6bc4852630991c3d9c;hb=5ca48ae961d956ce188ff45b2d2c04127874276a;hp=461321fb01fdb770cee0d85a6b4b55bf838d93a4;hpb=5c895f64223b174af848b766d3b76058fb0f542e;p=babeltrace.git diff --git a/src/cpp-common/bt2/field-class.hpp b/src/cpp-common/bt2/field-class.hpp index 461321fb..c6c4d690 100644 --- a/src/cpp-common/bt2/field-class.hpp +++ b/src/cpp-common/bt2/field-class.hpp @@ -13,15 +13,16 @@ #include #include "common/assert.h" -#include "cpp-common/optional.hpp" -#include "cpp-common/string_view.hpp" +#include "cpp-common/bt2c/c-string-view.hpp" +#include "cpp-common/bt2s/optional.hpp" +#include "borrowed-object-iterator.hpp" #include "borrowed-object.hpp" -#include "common-iterator.hpp" #include "exc.hpp" #include "field-path.hpp" #include "integer-range-set.hpp" #include "internal/utils.hpp" +#include "optional-borrowed-object.hpp" #include "shared-object.hpp" #include "value.hpp" @@ -167,16 +168,14 @@ private: using typename BorrowedObject::_ThisBorrowedObject; protected: - using typename BorrowedObject::_LibObjPtr; using _ThisCommonFieldClass = CommonFieldClass; public: + using typename BorrowedObject::LibObjPtr; using Shared = SharedFieldClass, LibObjT>; + using UserAttributes = internal::DepUserAttrs; - using UserAttributes = - typename std::conditional::value, ConstMapValue, MapValue>::type; - - explicit CommonFieldClass(const _LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr} + explicit CommonFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr} { } @@ -186,7 +185,7 @@ public: } template - CommonFieldClass& operator=(const CommonFieldClass fc) noexcept + CommonFieldClass operator=(const CommonFieldClass fc) noexcept { _ThisBorrowedObject::operator=(fc); return *this; @@ -455,13 +454,13 @@ template class CommonBitArrayFieldClass final : public CommonFieldClass { private: - using typename CommonFieldClass::_LibObjPtr; using typename CommonFieldClass::_ThisCommonFieldClass; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass, LibObjT>; - explicit CommonBitArrayFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonBitArrayFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isBitArray()); @@ -474,7 +473,7 @@ public: } template - CommonBitArrayFieldClass& + CommonBitArrayFieldClass operator=(const CommonBitArrayFieldClass fc) noexcept { _ThisCommonFieldClass::operator=(fc); @@ -535,13 +534,13 @@ private: using typename CommonFieldClass::_ThisCommonFieldClass; protected: - using typename CommonFieldClass::_LibObjPtr; using _ThisCommonIntegerFieldClass = CommonIntegerFieldClass; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass, LibObjT>; - explicit CommonIntegerFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonIntegerFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isInteger()); @@ -554,7 +553,7 @@ public: } template - CommonIntegerFieldClass& operator=(const CommonIntegerFieldClass fc) noexcept + CommonIntegerFieldClass operator=(const CommonIntegerFieldClass fc) noexcept { _ThisCommonFieldClass::operator=(fc); return *this; @@ -620,10 +619,6 @@ struct TypeDescr : public IntegerFieldClassTypeDescr { }; -} /* namespace internal */ - -namespace internal { - template struct ConstEnumerationFieldClassMappingSpec; @@ -671,14 +666,15 @@ class ConstEnumerationFieldClassMapping final : public BorrowedObject { private: using typename BorrowedObject::_ThisBorrowedObject; - using typename BorrowedObject::_LibObjPtr; public: + using typename BorrowedObject::LibObjPtr; + using RangeSet = typename std::conditional< std::is_same::value, ConstUnsignedIntegerRangeSet, ConstSignedIntegerRangeSet>::type; - explicit ConstEnumerationFieldClassMapping(const _LibObjPtr libObjPtr) noexcept : + explicit ConstEnumerationFieldClassMapping(const LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr} { } @@ -688,7 +684,7 @@ public: { } - ConstEnumerationFieldClassMapping& + ConstEnumerationFieldClassMapping operator=(const ConstEnumerationFieldClassMapping& mapping) noexcept { _ThisBorrowedObject::operator=(mapping); @@ -701,7 +697,7 @@ public: internal::ConstEnumerationFieldClassMappingSpec::ranges(this->libObjPtr())}; } - bpstd::string_view label() const noexcept + bt2c::CStringView label() const noexcept { return internal::ConstEnumerationFieldClassMappingSpec::label(this->libObjPtr()); } @@ -775,13 +771,13 @@ private: using typename CommonIntegerFieldClass::_ThisCommonIntegerFieldClass; protected: - using typename CommonFieldClass::_LibObjPtr; using _ThisCommonBaseEnumerationFieldClass = CommonBaseEnumerationFieldClass; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass<_ThisCommonBaseEnumerationFieldClass, LibObjT>; - explicit CommonBaseEnumerationFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonBaseEnumerationFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonIntegerFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isEnumeration()); @@ -795,7 +791,7 @@ public: } template - CommonBaseEnumerationFieldClass& + CommonBaseEnumerationFieldClass operator=(const CommonBaseEnumerationFieldClass fc) noexcept { _ThisCommonIntegerFieldClass::operator=(fc); @@ -822,16 +818,15 @@ template class CommonEnumerationFieldClass final : public CommonBaseEnumerationFieldClass { private: - using typename CommonFieldClass::_LibObjPtr; using typename CommonBaseEnumerationFieldClass::_ThisCommonBaseEnumerationFieldClass; - using _ThisCommonEnumerationFieldClass = CommonEnumerationFieldClass; public: - using Shared = SharedFieldClass<_ThisCommonEnumerationFieldClass, LibObjT>; - using Iterator = CommonIterator; + using typename CommonFieldClass::LibObjPtr; + using Shared = SharedFieldClass; + using Iterator = BorrowedObjectIterator; using Mapping = MappingT; - explicit CommonEnumerationFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonEnumerationFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonBaseEnumerationFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isEnumeration()); @@ -840,15 +835,15 @@ public: template CommonEnumerationFieldClass( const CommonEnumerationFieldClass fc) noexcept : - _ThisCommonEnumerationFieldClass {fc} + CommonEnumerationFieldClass {fc} { } template - CommonEnumerationFieldClass& + CommonEnumerationFieldClass operator=(const CommonEnumerationFieldClass fc) noexcept { - _ThisCommonEnumerationFieldClass::operator=(fc); + CommonEnumerationFieldClass::operator=(fc); return *this; } @@ -858,24 +853,13 @@ public: this->libObjPtr(), index)}; } - nonstd::optional operator[](const char * const label) const noexcept + OptionalBorrowedObject operator[](const bt2c::CStringView label) const noexcept { - const auto libObjPtr = internal::CommonEnumerationFieldClassSpec::mappingByLabel( + return internal::CommonEnumerationFieldClassSpec::mappingByLabel( this->libObjPtr(), label); - - if (libObjPtr) { - return Mapping {libObjPtr}; - } - - return nonstd::nullopt; - } - - nonstd::optional operator[](const std::string& label) const noexcept - { - return (*this)[label.data()]; } - void addMapping(const char * const label, const typename Mapping::RangeSet ranges) const + void addMapping(const bt2c::CStringView label, const typename Mapping::RangeSet ranges) const { const auto status = internal::CommonEnumerationFieldClassSpec::addMapping( this->libObjPtr(), label, ranges.libObjPtr()); @@ -885,11 +869,6 @@ public: } } - void addMapping(const std::string& label, const typename Mapping::RangeSet ranges) const - { - this->addMapping(label.data(), ranges); - } - Iterator begin() const noexcept { return Iterator {*this, 0}; @@ -996,17 +975,14 @@ template class CommonStructureFieldClassMember final : public BorrowedObject { private: - using typename BorrowedObject::_LibObjPtr; using typename BorrowedObject::_ThisBorrowedObject; - - using _FieldClass = - typename std::conditional::value, ConstFieldClass, FieldClass>::type; + using _FieldClass = internal::DepFc; public: - using UserAttributes = - typename std::conditional::value, ConstMapValue, MapValue>::type; + using typename BorrowedObject::LibObjPtr; + using UserAttributes = internal::DepUserAttrs; - explicit CommonStructureFieldClassMember(const _LibObjPtr libObjPtr) noexcept : + explicit CommonStructureFieldClassMember(const LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr} { } @@ -1019,7 +995,7 @@ public: } template - CommonStructureFieldClassMember& + CommonStructureFieldClassMember operator=(const CommonStructureFieldClassMember fc) noexcept { _ThisBorrowedObject::operator=(fc); @@ -1031,7 +1007,7 @@ public: return CommonStructureFieldClassMember {*this}; } - bpstd::string_view name() const noexcept + bt2c::CStringView name() const noexcept { return bt_field_class_structure_member_get_name(this->libObjPtr()); } @@ -1126,18 +1102,17 @@ template class CommonStructureFieldClass final : public CommonFieldClass { private: - using typename CommonFieldClass::_LibObjPtr; using typename CommonFieldClass::_ThisCommonFieldClass; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass, LibObjT>; - using Member = - typename std::conditional::value, ConstStructureFieldClassMember, - StructureFieldClassMember>::type; + using Iterator = BorrowedObjectIterator>; - using Iterator = CommonIterator, Member>; + using Member = + internal::DepType; - explicit CommonStructureFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonStructureFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isStructure()); @@ -1150,7 +1125,7 @@ public: } template - CommonStructureFieldClass& operator=(const CommonStructureFieldClass fc) noexcept + CommonStructureFieldClass operator=(const CommonStructureFieldClass fc) noexcept { _ThisCommonFieldClass::operator=(fc); return *this; @@ -1161,7 +1136,7 @@ public: return CommonStructureFieldClass {*this}; } - void appendMember(const char * const name, const FieldClass fc) const + void appendMember(const bt2c::CStringView name, const FieldClass fc) const { static_assert(!std::is_const::value, "Not available with `bt2::ConstStructureFieldClass`."); @@ -1174,11 +1149,6 @@ public: } } - void appendMember(const std::string& name, const FieldClass fc) const - { - this->appendMember(name.data(), fc); - } - std::uint64_t length() const noexcept { return bt_field_class_structure_get_member_count(this->libObjPtr()); @@ -1200,21 +1170,10 @@ public: this->libObjPtr(), index)}; } - nonstd::optional operator[](const char * const name) const noexcept + OptionalBorrowedObject operator[](const bt2c::CStringView name) const noexcept { - const auto libObjPtr = - internal::CommonStructureFieldClassSpec::memberByName(this->libObjPtr(), name); - - if (libObjPtr) { - return Member {libObjPtr}; - } - - return nonstd::nullopt; - } - - nonstd::optional operator[](const std::string& name) const noexcept - { - return (*this)[name.data()]; + return internal::CommonStructureFieldClassSpec::memberByName(this->libObjPtr(), + name); } Shared shared() const noexcept @@ -1274,18 +1233,16 @@ class CommonArrayFieldClass : public CommonFieldClass { private: using typename CommonFieldClass::_ThisCommonFieldClass; - - using _FieldClass = - typename std::conditional::value, ConstFieldClass, FieldClass>::type; + using _FieldClass = internal::DepFc; protected: - using typename CommonFieldClass::_LibObjPtr; using _ThisCommonArrayFieldClass = CommonArrayFieldClass; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass, LibObjT>; - explicit CommonArrayFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonArrayFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isArray()); @@ -1298,7 +1255,7 @@ public: } template - CommonArrayFieldClass& operator=(const CommonArrayFieldClass fc) noexcept + CommonArrayFieldClass operator=(const CommonArrayFieldClass fc) noexcept { _ThisCommonFieldClass::operator=(fc); return *this; @@ -1349,12 +1306,12 @@ class CommonStaticArrayFieldClass final : public CommonArrayFieldClass { private: using typename CommonArrayFieldClass::_ThisCommonArrayFieldClass; - using typename CommonFieldClass::_LibObjPtr; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass, LibObjT>; - explicit CommonStaticArrayFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonStaticArrayFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonArrayFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isStaticArray()); @@ -1367,7 +1324,7 @@ public: } template - CommonStaticArrayFieldClass& + CommonStaticArrayFieldClass operator=(const CommonStaticArrayFieldClass fc) noexcept { _ThisCommonArrayFieldClass::operator=(fc); @@ -1418,12 +1375,12 @@ class CommonDynamicArrayWithLengthFieldClass final : public CommonArrayFieldClas { private: using typename CommonArrayFieldClass::_ThisCommonArrayFieldClass; - using typename CommonFieldClass::_LibObjPtr; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass, LibObjT>; - explicit CommonDynamicArrayWithLengthFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonDynamicArrayWithLengthFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonArrayFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isDynamicArrayWithLength()); @@ -1437,7 +1394,7 @@ public: } template - CommonDynamicArrayWithLengthFieldClass& + CommonDynamicArrayWithLengthFieldClass operator=(const CommonDynamicArrayWithLengthFieldClass fc) noexcept { _ThisCommonArrayFieldClass::operator=(fc); @@ -1517,18 +1474,16 @@ class CommonOptionFieldClass : public CommonFieldClass { private: using typename CommonFieldClass::_ThisCommonFieldClass; - - using _FieldClass = - typename std::conditional::value, ConstFieldClass, FieldClass>::type; + using _FieldClass = internal::DepFc; protected: - using typename CommonFieldClass::_LibObjPtr; using _ThisCommonOptionFieldClass = CommonOptionFieldClass; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass, LibObjT>; - explicit CommonOptionFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonOptionFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isOption()); @@ -1541,7 +1496,7 @@ public: } template - CommonOptionFieldClass& operator=(const CommonOptionFieldClass fc) noexcept + CommonOptionFieldClass operator=(const CommonOptionFieldClass fc) noexcept { _ThisCommonFieldClass::operator=(fc); return *this; @@ -1594,13 +1549,13 @@ private: using typename CommonOptionFieldClass::_ThisCommonOptionFieldClass; protected: - using typename CommonFieldClass::_LibObjPtr; using _ThisCommonOptionWithSelectorFieldClass = CommonOptionWithSelectorFieldClass; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass, LibObjT>; - explicit CommonOptionWithSelectorFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonOptionWithSelectorFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonOptionFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isOptionWithSelector()); @@ -1614,7 +1569,7 @@ public: } template - CommonOptionWithSelectorFieldClass& + CommonOptionWithSelectorFieldClass operator=(const CommonOptionWithSelectorFieldClass fc) noexcept { _ThisCommonOptionFieldClass::operator=(fc); @@ -1666,15 +1621,14 @@ template class CommonOptionWithBoolSelectorFieldClass : public CommonOptionWithSelectorFieldClass { private: - using typename CommonFieldClass::_LibObjPtr; - using typename CommonOptionWithSelectorFieldClass< LibObjT>::_ThisCommonOptionWithSelectorFieldClass; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass, LibObjT>; - explicit CommonOptionWithBoolSelectorFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonOptionWithBoolSelectorFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonOptionWithSelectorFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isOptionWithBoolSelector()); @@ -1688,7 +1642,7 @@ public: } template - CommonOptionWithBoolSelectorFieldClass& + CommonOptionWithBoolSelectorFieldClass operator=(const CommonOptionWithBoolSelectorFieldClass fc) noexcept { _ThisCommonOptionWithSelectorFieldClass::operator=(fc); @@ -1770,20 +1724,15 @@ template class CommonOptionWithIntegerSelectorFieldClass : public CommonOptionWithSelectorFieldClass { private: - using typename CommonFieldClass::_LibObjPtr; - using typename CommonOptionWithSelectorFieldClass< LibObjT>::_ThisCommonOptionWithSelectorFieldClass; - using _ThisCommonOptionWithIntegerSelectorFieldClass = - CommonOptionWithIntegerSelectorFieldClass; - public: - using Shared = SharedFieldClass<_ThisCommonOptionWithIntegerSelectorFieldClass, LibObjT>; - + using typename CommonFieldClass::LibObjPtr; + using Shared = SharedFieldClass; using RangeSet = RangeSetT; - explicit CommonOptionWithIntegerSelectorFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonOptionWithIntegerSelectorFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonOptionWithSelectorFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isOptionWithIntegerSelector()); @@ -1797,7 +1746,7 @@ public: } template - CommonOptionWithIntegerSelectorFieldClass& + CommonOptionWithIntegerSelectorFieldClass operator=(const CommonOptionWithIntegerSelectorFieldClass fc) noexcept { _ThisCommonOptionWithSelectorFieldClass::operator=(fc); @@ -1908,16 +1857,13 @@ class CommonVariantFieldClassOption : public BorrowedObject { private: using typename BorrowedObject::_ThisBorrowedObject; - using typename BorrowedObject::_LibObjPtr; - - using _FieldClass = - typename std::conditional::value, ConstFieldClass, FieldClass>::type; + using _FieldClass = internal::DepFc; public: - using UserAttributes = - typename std::conditional::value, ConstMapValue, MapValue>::type; + using typename BorrowedObject::LibObjPtr; + using UserAttributes = internal::DepUserAttrs; - explicit CommonVariantFieldClassOption(const _LibObjPtr libObjPtr) noexcept : + explicit CommonVariantFieldClassOption(const LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr} { } @@ -1929,7 +1875,7 @@ public: } template - CommonVariantFieldClassOption& + CommonVariantFieldClassOption operator=(const CommonVariantFieldClassOption fc) noexcept { _ThisBorrowedObject::operator=(fc); @@ -1941,15 +1887,9 @@ public: return CommonVariantFieldClassOption {*this}; } - nonstd::optional name() const noexcept + bt2c::CStringView name() const noexcept { - const auto name = bt_field_class_variant_option_get_name(this->libObjPtr()); - - if (name) { - return name; - } - - return nonstd::nullopt; + return bt_field_class_variant_option_get_name(this->libObjPtr()); } _FieldClass fieldClass() const noexcept @@ -2053,17 +1993,18 @@ class ConstVariantWithIntegerSelectorFieldClassOption : public BorrowedObject
  • ::_ThisBorrowedObject; - using typename BorrowedObject::_LibObjPtr; using _Spec = internal::ConstVariantWithIntegerSelectorFieldClassOptionSpec; public: + using typename BorrowedObject::LibObjPtr; + using RangeSet = typename std::conditional< std::is_same< LibObjT, const bt_field_class_variant_with_selector_field_integer_unsigned_option>::value, ConstUnsignedIntegerRangeSet, ConstSignedIntegerRangeSet>::type; - explicit ConstVariantWithIntegerSelectorFieldClassOption(const _LibObjPtr libObjPtr) noexcept : + explicit ConstVariantWithIntegerSelectorFieldClassOption(const LibObjPtr libObjPtr) noexcept : _ThisBorrowedObject {libObjPtr} { } @@ -2076,7 +2017,7 @@ public: } template - ConstVariantWithIntegerSelectorFieldClassOption& + ConstVariantWithIntegerSelectorFieldClassOption operator=(const ConstVariantWithIntegerSelectorFieldClassOption fc) noexcept { _ThisBorrowedObject::operator=(fc); @@ -2088,7 +2029,7 @@ public: return ConstVariantFieldClassOption {_Spec::asBaseOption(this->libObjPtr())}; } - nonstd::optional name() const noexcept + bt2c::CStringView name() const noexcept { return this->asBaseOption().name(); } @@ -2160,19 +2101,17 @@ private: using typename CommonFieldClass::_ThisCommonFieldClass; protected: - using typename CommonFieldClass::_LibObjPtr; using _ThisCommonVariantFieldClass = CommonVariantFieldClass; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass, LibObjT>; + using Iterator = BorrowedObjectIterator; using Option = - typename std::conditional::value, ConstVariantFieldClassOption, - VariantFieldClassOption>::type; - - using Iterator = CommonIterator; + internal::DepType; - explicit CommonVariantFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonVariantFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isVariant()); @@ -2185,7 +2124,7 @@ public: } template - CommonVariantFieldClass& operator=(const CommonVariantFieldClass fc) noexcept + CommonVariantFieldClass operator=(const CommonVariantFieldClass fc) noexcept { _ThisCommonFieldClass::operator=(fc); return *this; @@ -2217,21 +2156,10 @@ public: this->libObjPtr(), index)}; } - nonstd::optional
  • ::_ThisCommonVariantFieldClass; - using typename CommonFieldClass::_LibObjPtr; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass, LibObjT>; - explicit CommonVariantWithoutSelectorFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonVariantWithoutSelectorFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonVariantFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isVariantWithoutSelector()); @@ -2287,7 +2215,7 @@ public: } template - CommonVariantWithoutSelectorFieldClass& + CommonVariantWithoutSelectorFieldClass operator=(const CommonVariantWithoutSelectorFieldClass fc) noexcept { _ThisCommonVariantFieldClass::operator=(fc); @@ -2313,7 +2241,12 @@ public: } } - void appendOption(const nonstd::optional& name, const FieldClass fc) const + void appendOption(const bt2c::CStringView name, const FieldClass fc) const + { + return this->appendOption(name.data(), fc); + } + + void appendOption(const bt2s::optional& name, const FieldClass fc) const { this->appendOption(name ? name->data() : nullptr, fc); } @@ -2420,13 +2353,13 @@ private: using typename CommonVariantFieldClass::_ThisCommonVariantFieldClass; protected: - using typename CommonFieldClass::_LibObjPtr; using _ThisCommonVariantWithSelectorFieldClass = CommonVariantWithSelectorFieldClass; public: + using typename CommonFieldClass::LibObjPtr; using Shared = SharedFieldClass<_ThisCommonVariantWithSelectorFieldClass, LibObjT>; - explicit CommonVariantWithSelectorFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonVariantWithSelectorFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonVariantFieldClass {libObjPtr} { BT_ASSERT_DBG(this->isVariantWithSelector()); @@ -2440,7 +2373,7 @@ public: } template - CommonVariantWithSelectorFieldClass& + CommonVariantWithSelectorFieldClass operator=(const CommonVariantWithSelectorFieldClass fc) noexcept { _ThisCommonVariantFieldClass::operator=(fc); @@ -2476,23 +2409,21 @@ class CommonVariantWithIntegerSelectorFieldClass : private: using typename CommonVariantWithSelectorFieldClass< LibObjT>::_ThisCommonVariantWithSelectorFieldClass; - using typename CommonFieldClass::_LibObjPtr; - using _ThisCommonVariantWithIntegerSelectorFieldClass = - CommonVariantWithIntegerSelectorFieldClass; using _Spec = internal::CommonVariantWithIntegerSelectorFieldClassSpec; public: - using Shared = SharedFieldClass<_ThisCommonVariantWithIntegerSelectorFieldClass, LibObjT>; - + using typename CommonFieldClass::LibObjPtr; + using Shared = SharedFieldClass; using Option = OptionT; + using Iterator = - CommonIterator, Option>; + BorrowedObjectIterator>; - explicit CommonVariantWithIntegerSelectorFieldClass(const _LibObjPtr libObjPtr) noexcept : + explicit CommonVariantWithIntegerSelectorFieldClass(const LibObjPtr libObjPtr) noexcept : _ThisCommonVariantWithSelectorFieldClass {libObjPtr} { - BT_ASSERT_DBG(this->isVariant()); + BT_ASSERT_DBG(this->isVariantWithIntegerSelector()); } template @@ -2503,7 +2434,7 @@ public: } template - CommonVariantWithIntegerSelectorFieldClass& + CommonVariantWithIntegerSelectorFieldClass operator=(const CommonVariantWithIntegerSelectorFieldClass fc) noexcept { _ThisCommonVariantWithSelectorFieldClass::operator=(fc); @@ -2515,20 +2446,9 @@ public: return Option {_Spec::optionByIndex(this->libObjPtr(), index)}; } - nonstd::optional