#include <babeltrace2/babeltrace.h>
#include "common/assert.h"
+#include "cpp-common/bt2c/c-string-view.hpp"
#include "cpp-common/bt2s/optional.hpp"
#include "borrowed-object-iterator.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"
internal::ConstEnumerationFieldClassMappingSpec<LibObjT>::ranges(this->libObjPtr())};
}
- const char *label() const noexcept
+ bt2c::CStringView label() const noexcept
{
return internal::ConstEnumerationFieldClassMappingSpec<LibObjT>::label(this->libObjPtr());
}
this->libObjPtr(), index)};
}
- bt2s::optional<Mapping> operator[](const char * const label) const noexcept
+ OptionalBorrowedObject<Mapping> operator[](const bt2c::CStringView label) const noexcept
{
- const auto libObjPtr = internal::CommonEnumerationFieldClassSpec<MappingT>::mappingByLabel(
+ return internal::CommonEnumerationFieldClassSpec<MappingT>::mappingByLabel(
this->libObjPtr(), label);
-
- if (libObjPtr) {
- return Mapping {libObjPtr};
- }
-
- return bt2s::nullopt;
- }
-
- bt2s::optional<Mapping> 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<MappingT>::addMapping(
this->libObjPtr(), label, ranges.libObjPtr());
}
}
- 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};
return CommonStructureFieldClassMember<const bt_field_class_structure_member> {*this};
}
- const char *name() const noexcept
+ bt2c::CStringView name() const noexcept
{
return bt_field_class_structure_member_get_name(this->libObjPtr());
}
return CommonStructureFieldClass<const bt_field_class> {*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<LibObjT>::value,
"Not available with `bt2::ConstStructureFieldClass`.");
}
}
- 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());
this->libObjPtr(), index)};
}
- bt2s::optional<Member> operator[](const char * const name) const noexcept
+ OptionalBorrowedObject<Member> operator[](const bt2c::CStringView name) const noexcept
{
- const auto libObjPtr =
- internal::CommonStructureFieldClassSpec<LibObjT>::memberByName(this->libObjPtr(), name);
-
- if (libObjPtr) {
- return Member {libObjPtr};
- }
-
- return bt2s::nullopt;
- }
-
- bt2s::optional<Member> operator[](const std::string& name) const noexcept
- {
- return (*this)[name.data()];
+ return internal::CommonStructureFieldClassSpec<LibObjT>::memberByName(this->libObjPtr(),
+ name);
}
Shared shared() const noexcept
return CommonVariantFieldClassOption<const bt_field_class_variant_option> {*this};
}
- const char *name() const noexcept
+ bt2c::CStringView name() const noexcept
{
return bt_field_class_variant_option_get_name(this->libObjPtr());
}
return ConstVariantFieldClassOption {_Spec::asBaseOption(this->libObjPtr())};
}
- const char *name() const noexcept
+ bt2c::CStringView name() const noexcept
{
return this->asBaseOption().name();
}
this->libObjPtr(), index)};
}
- bt2s::optional<Option> operator[](const char * const name) const noexcept
- {
- const auto libObjPtr =
- internal::CommonVariantFieldClassSpec<LibObjT>::optionByName(this->libObjPtr(), name);
-
- if (libObjPtr) {
- return Option {libObjPtr};
- }
-
- return bt2s::nullopt;
- }
-
- bt2s::optional<Option> operator[](const std::string& name) const noexcept
+ OptionalBorrowedObject<Option> operator[](const bt2c::CStringView name) const noexcept
{
- return (*this)[name.data()];
+ return internal::CommonVariantFieldClassSpec<LibObjT>::optionByName(this->libObjPtr(),
+ name);
}
Shared shared() const noexcept
}
}
+ void appendOption(const bt2c::CStringView name, const FieldClass fc) const
+ {
+ return this->appendOption(name.data(), fc);
+ }
+
void appendOption(const bt2s::optional<std::string>& name, const FieldClass fc) const
{
this->appendOption(name ? name->data() : nullptr, fc);
explicit CommonVariantWithIntegerSelectorFieldClass(const LibObjPtr libObjPtr) noexcept :
_ThisCommonVariantWithSelectorFieldClass {libObjPtr}
{
- BT_ASSERT_DBG(this->isVariant());
+ BT_ASSERT_DBG(this->isVariantWithIntegerSelector());
}
template <typename OtherLibObjT>
return Option {_Spec::optionByIndex(this->libObjPtr(), index)};
}
- bt2s::optional<Option> operator[](const char * const name) const noexcept
+ OptionalBorrowedObject<Option> operator[](const bt2c::CStringView name) const noexcept
{
- const auto libObjPtr = _Spec::optionByName(this->libObjPtr(), name);
-
- if (libObjPtr) {
- return Option {libObjPtr};
- }
-
- return bt2s::nullopt;
- }
-
- bt2s::optional<Option> operator[](const std::string& name) const noexcept
- {
- return (*this)[name.data()];
+ return _Spec::optionByName(this->libObjPtr(), name);
}
void appendOption(const char * const name, const FieldClass fc,
}
}
+ void appendOption(const bt2c::CStringView name, const FieldClass fc,
+ const typename Option::RangeSet ranges) const
+ {
+ return this->appendOption(name.data(), fc, ranges);
+ }
+
void appendOption(const bt2s::optional<std::string>& name, const FieldClass fc,
const typename Option::RangeSet ranges) const
{
template <typename LibObjT>
CommonBitArrayFieldClass<LibObjT> CommonFieldClass<LibObjT>::asBitArray() const noexcept
{
- BT_ASSERT_DBG(this->isBitArray());
return CommonBitArrayFieldClass<LibObjT> {this->libObjPtr()};
}
template <typename LibObjT>
CommonIntegerFieldClass<LibObjT> CommonFieldClass<LibObjT>::asInteger() const noexcept
{
- BT_ASSERT_DBG(this->isInteger());
return CommonIntegerFieldClass<LibObjT> {this->libObjPtr()};
}
template <typename LibObjT>
CommonBaseEnumerationFieldClass<LibObjT> CommonFieldClass<LibObjT>::asEnumeration() const noexcept
{
- BT_ASSERT_DBG(this->isEnumeration());
return CommonBaseEnumerationFieldClass<LibObjT> {this->libObjPtr()};
}
template <typename LibObjT>
CommonStructureFieldClass<LibObjT> CommonFieldClass<LibObjT>::asStructure() const noexcept
{
- BT_ASSERT_DBG(this->isStructure());
return CommonStructureFieldClass<LibObjT> {this->libObjPtr()};
}
template <typename LibObjT>
CommonArrayFieldClass<LibObjT> CommonFieldClass<LibObjT>::asArray() const noexcept
{
- BT_ASSERT_DBG(this->isArray());
return CommonArrayFieldClass<LibObjT> {this->libObjPtr()};
}
template <typename LibObjT>
CommonStaticArrayFieldClass<LibObjT> CommonFieldClass<LibObjT>::asStaticArray() const noexcept
{
- BT_ASSERT_DBG(this->isStaticArray());
return CommonStaticArrayFieldClass<LibObjT> {this->libObjPtr()};
}
CommonDynamicArrayWithLengthFieldClass<LibObjT>
CommonFieldClass<LibObjT>::asDynamicArrayWithLength() const noexcept
{
- BT_ASSERT_DBG(this->isDynamicArrayWithLength());
return CommonDynamicArrayWithLengthFieldClass<LibObjT> {this->libObjPtr()};
}
template <typename LibObjT>
CommonOptionFieldClass<LibObjT> CommonFieldClass<LibObjT>::asOption() const noexcept
{
- BT_ASSERT_DBG(this->isOption());
return CommonOptionFieldClass<LibObjT> {this->libObjPtr()};
}
CommonOptionWithSelectorFieldClass<LibObjT>
CommonFieldClass<LibObjT>::asOptionWithSelector() const noexcept
{
- BT_ASSERT_DBG(this->isOptionWithSelector());
return CommonOptionWithSelectorFieldClass<LibObjT> {this->libObjPtr()};
}
CommonOptionWithBoolSelectorFieldClass<LibObjT>
CommonFieldClass<LibObjT>::asOptionWithBoolSelector() const noexcept
{
- BT_ASSERT_DBG(this->isOptionWithBoolSelector());
return CommonOptionWithBoolSelectorFieldClass<LibObjT> {this->libObjPtr()};
}
template <typename LibObjT>
CommonVariantFieldClass<LibObjT> CommonFieldClass<LibObjT>::asVariant() const noexcept
{
- BT_ASSERT_DBG(this->isVariant());
return CommonVariantFieldClass<LibObjT> {this->libObjPtr()};
}
CommonVariantWithoutSelectorFieldClass<LibObjT>
CommonFieldClass<LibObjT>::asVariantWithoutSelector() const noexcept
{
- BT_ASSERT_DBG(this->isVariantWithoutSelector());
return CommonVariantWithoutSelectorFieldClass<LibObjT> {this->libObjPtr()};
}
CommonVariantWithSelectorFieldClass<LibObjT>
CommonFieldClass<LibObjT>::asVariantWithSelector() const noexcept
{
- BT_ASSERT_DBG(this->isVariantWithSelector());
return CommonVariantWithSelectorFieldClass<LibObjT> {this->libObjPtr()};
}