#include <babeltrace2/babeltrace.h>
+#include "cpp-common/bt2c/c-string-view.hpp"
#include "cpp-common/bt2s/optional.hpp"
#include "borrowed-object.hpp"
#include "field-class.hpp"
#include "field.hpp"
#include "internal/utils.hpp"
+#include "optional-borrowed-object.hpp"
#include "shared-object.hpp"
#include "value.hpp"
Class cls() const noexcept;
_Stream stream() const noexcept;
- bt2s::optional<_Packet> packet() const noexcept;
+ OptionalBorrowedObject<_Packet> packet() const noexcept;
- bt2s::optional<_StructureField> payloadField() const noexcept
+ OptionalBorrowedObject<_StructureField> payloadField() const noexcept
{
- const auto libObjPtr = _Spec::payloadField(this->libObjPtr());
-
- if (libObjPtr) {
- return _StructureField {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::payloadField(this->libObjPtr());
}
- bt2s::optional<_StructureField> specificContextField() const noexcept
+ OptionalBorrowedObject<_StructureField> specificContextField() const noexcept
{
- const auto libObjPtr = _Spec::specificContextField(this->libObjPtr());
-
- if (libObjPtr) {
- return _StructureField {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::specificContextField(this->libObjPtr());
}
- bt2s::optional<_StructureField> commonContextField() const noexcept
+ OptionalBorrowedObject<_StructureField> commonContextField() const noexcept
{
- const auto libObjPtr = _Spec::commonContextField(this->libObjPtr());
-
- if (libObjPtr) {
- return _StructureField {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::commonContextField(this->libObjPtr());
}
};
_Stream stream() const noexcept;
- bt2s::optional<_StructureField> contextField() const noexcept
+ OptionalBorrowedObject<_StructureField> contextField() const noexcept
{
- const auto libObjPtr = _Spec::contextField(this->libObjPtr());
-
- if (libObjPtr) {
- return _StructureField {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::contextField(this->libObjPtr());
}
Shared shared() const noexcept
} /* namespace internal */
template <typename LibObjT>
-bt2s::optional<typename CommonEvent<LibObjT>::_Packet> CommonEvent<LibObjT>::packet() const noexcept
+OptionalBorrowedObject<typename CommonEvent<LibObjT>::_Packet>
+CommonEvent<LibObjT>::packet() const noexcept
{
- const auto libObjPtr = _Spec::packet(this->libObjPtr());
-
- if (libObjPtr) {
- return _Packet {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::packet(this->libObjPtr());
}
namespace internal {
return bt_stream_get_id(this->libObjPtr());
}
- void name(const char * const name) const
+ void name(const bt2c::CStringView name) const
{
static_assert(!std::is_const<LibObjT>::value, "Not available with `bt2::ConstStream`.");
}
}
- void name(const std::string& name) const
- {
- this->name(name.data());
- }
-
- const char *name() const noexcept
+ bt2c::CStringView name() const noexcept
{
return bt_stream_get_name(this->libObjPtr());
}
struct ConstEnvironmentEntry
{
- const char *name;
+ bt2c::CStringView name;
ConstValue value;
};
Class cls() const noexcept;
- void name(const char * const name) const
+ void name(const bt2c::CStringView name) const
{
static_assert(!std::is_const<LibObjT>::value, "Not available with `bt2::ConstTrace`.");
}
}
- void name(const std::string& name) const
- {
- this->name(name.data());
- }
-
- const char *name() const noexcept
+ bt2c::CStringView name() const noexcept
{
return bt_trace_get_name(this->libObjPtr());
}
return _Stream {_Spec::streamByIndex(this->libObjPtr(), index)};
}
- bt2s::optional<_Stream> streamById(const std::uint64_t id) const noexcept
+ OptionalBorrowedObject<_Stream> streamById(const std::uint64_t id) const noexcept
{
- const auto libObjPtr = _Spec::streamById(this->libObjPtr(), id);
-
- if (libObjPtr) {
- return _Stream {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::streamById(this->libObjPtr(), id);
}
- void environmentEntry(const char * const name, const std::int64_t val) const
+ void environmentEntry(const bt2c::CStringView name, const std::int64_t val) const
{
static_assert(!std::is_const<LibObjT>::value, "Not available with `bt2::ConstTrace`.");
}
}
- void environmentEntry(const std::string& name, const std::int64_t val) const
- {
- this->environmentEntry(name.data(), val);
- }
-
- void environmentEntry(const char * const name, const char * const val) const
+ void environmentEntry(const bt2c::CStringView name, const bt2c::CStringView val) const
{
static_assert(!std::is_const<LibObjT>::value, "Not available with `bt2::ConstTrace`.");
}
}
- void environmentEntry(const std::string& name, const char * const val) const
- {
- this->environmentEntry(name.data(), val);
- }
-
- void environmentEntry(const char * const name, const std::string& val) const
- {
- this->environmentEntry(name, val.data());
- }
-
- void environmentEntry(const std::string& name, const std::string& val) const
- {
- this->environmentEntry(name.data(), val.data());
- }
-
std::uint64_t environmentSize() const noexcept
{
return bt_trace_get_environment_entry_count(this->libObjPtr());
return ConstEnvironmentEntry {name, ConstValue {libObjPtr}};
}
- bt2s::optional<ConstValue> environmentEntry(const char * const name) const noexcept
+ OptionalBorrowedObject<ConstValue> environmentEntry(const bt2c::CStringView name) const noexcept
{
- const auto libObjPtr =
- bt_trace_borrow_environment_entry_value_by_name_const(this->libObjPtr(), name);
-
- if (libObjPtr) {
- return ConstValue {libObjPtr};
- }
-
- return bt2s::nullopt;
- }
-
- bt2s::optional<ConstValue> environmentEntry(const std::string& name) const noexcept
- {
- return this->environmentEntry(name.data());
+ return bt_trace_borrow_environment_entry_value_by_name_const(this->libObjPtr(), name);
}
template <typename LibValT>
return bt_event_class_get_id(this->libObjPtr());
}
- void name(const char * const name) const
+ void name(const bt2c::CStringView name) const
{
static_assert(!std::is_const<LibObjT>::value, "Not available with `bt2::ConstEventClass`.");
}
}
- void name(const std::string& name) const
- {
- this->name(name.data());
- }
-
- const char *name() const noexcept
+ bt2c::CStringView name() const noexcept
{
return bt_event_class_get_name(this->libObjPtr());
}
bt2s::optional<LogLevel> logLevel() const noexcept
{
bt_event_class_log_level libLogLevel;
- const auto avail = bt_event_class_get_log_level(this->libObjPtr(), &libLogLevel);
- if (avail == BT_PROPERTY_AVAILABILITY_AVAILABLE) {
+ if (bt_event_class_get_log_level(this->libObjPtr(), &libLogLevel)) {
return static_cast<LogLevel>(libLogLevel);
}
return bt2s::nullopt;
}
- void emfUri(const char * const emfUri) const
+ void emfUri(const bt2c::CStringView emfUri) const
{
static_assert(!std::is_const<LibObjT>::value, "Not available with `bt2::ConstEventClass`.");
}
}
- void emfUri(const std::string& emfUri) const
- {
- this->emfUri(emfUri.data());
- }
-
- const char *emfUri() const noexcept
+ bt2c::CStringView emfUri() const noexcept
{
return bt_event_class_get_emf_uri(this->libObjPtr());
}
}
}
- bt2s::optional<_StructureFieldClass> payloadFieldClass() const noexcept
+ OptionalBorrowedObject<_StructureFieldClass> payloadFieldClass() const noexcept
{
- const auto libObjPtr = _Spec::payloadFieldClass(this->libObjPtr());
-
- if (libObjPtr) {
- return _StructureFieldClass {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::payloadFieldClass(this->libObjPtr());
}
void specificContextFieldClass(const StructureFieldClass fc) const
}
}
- bt2s::optional<_StructureFieldClass> specificContextFieldClass() const noexcept
+ OptionalBorrowedObject<_StructureFieldClass> specificContextFieldClass() const noexcept
{
- const auto libObjPtr = _Spec::specificContextFieldClass(this->libObjPtr());
-
- if (libObjPtr) {
- return _StructureFieldClass {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::specificContextFieldClass(this->libObjPtr());
}
template <typename LibValT>
return bt_stream_class_get_id(this->libObjPtr());
}
- void name(const char * const name) const
+ void name(const bt2c::CStringView name) const
{
static_assert(!std::is_const<LibObjT>::value,
"Not available with `bt2::ConstStreamClass`.");
}
}
- void name(const std::string& name) const
- {
- this->name(name.data());
- }
-
- const char *name() const noexcept
+ bt2c::CStringView name() const noexcept
{
return bt_stream_class_get_name(this->libObjPtr());
}
BT_ASSERT(status == BT_STREAM_CLASS_SET_DEFAULT_CLOCK_CLASS_STATUS_OK);
}
- bt2s::optional<_ClockClass> defaultClockClass() const noexcept
+ OptionalBorrowedObject<_ClockClass> defaultClockClass() const noexcept
{
- const auto libObjPtr = _Spec::defaultClockClass(this->libObjPtr());
-
- if (libObjPtr) {
- return _ClockClass {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::defaultClockClass(this->libObjPtr());
}
std::uint64_t length() const noexcept
return _EventClass {_Spec::eventClassByIndex(this->libObjPtr(), index)};
}
- bt2s::optional<_EventClass> eventClassById(const std::uint64_t id) const noexcept
+ OptionalBorrowedObject<_EventClass> eventClassById(const std::uint64_t id) const noexcept
{
- const auto libObjPtr = _Spec::eventClassById(this->libObjPtr(), id);
-
- if (libObjPtr) {
- return _EventClass {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::eventClassById(this->libObjPtr(), id);
}
void packetContextFieldClass(const StructureFieldClass fc) const
}
}
- bt2s::optional<_StructureFieldClass> packetContextFieldClass() const noexcept
+ OptionalBorrowedObject<_StructureFieldClass> packetContextFieldClass() const noexcept
{
- const auto libObjPtr = _Spec::packetContextFieldClass(this->libObjPtr());
-
- if (libObjPtr) {
- return _StructureFieldClass {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::packetContextFieldClass(this->libObjPtr());
}
void eventCommonContextFieldClass(const StructureFieldClass fc) const
}
}
- bt2s::optional<_StructureFieldClass> eventCommonContextFieldClass() const noexcept
+ OptionalBorrowedObject<_StructureFieldClass> eventCommonContextFieldClass() const noexcept
{
- const auto libObjPtr = _Spec::eventCommonContextFieldClass(this->libObjPtr());
-
- if (libObjPtr) {
- return _StructureFieldClass {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::eventCommonContextFieldClass(this->libObjPtr());
}
template <typename LibValT>
return _StreamClass {_Spec::streamClassByIndex(this->libObjPtr(), index)};
}
- bt2s::optional<_StreamClass> streamClassById(const std::uint64_t id) const noexcept
+ OptionalBorrowedObject<_StreamClass> streamClassById(const std::uint64_t id) const noexcept
{
- const auto libObjPtr = _Spec::streamClassById(this->libObjPtr(), id);
-
- if (libObjPtr) {
- return _StreamClass {libObjPtr};
- }
-
- return bt2s::nullopt;
+ return _Spec::streamClassById(this->libObjPtr(), id);
}
template <typename LibValT>