#include "internal/utils.hpp"
#include "cpp-common/optional.hpp"
#include "cpp-common/string_view.hpp"
-#include "lib-error.hpp"
+#include "exc.hpp"
namespace bt2 {
namespace internal {
}
template <typename OtherLibObjT>
- CommonValue(const CommonValue<OtherLibObjT>& val) noexcept : _ThisBorrowedObj {val}
+ CommonValue(const CommonValue<OtherLibObjT> val) noexcept : _ThisBorrowedObj {val}
{
}
template <typename OtherLibObjT>
- _ThisCommonValue& operator=(const CommonValue<OtherLibObjT>& val) noexcept
+ _ThisCommonValue& operator=(const CommonValue<OtherLibObjT> val) noexcept
{
_ThisBorrowedObj::operator=(val);
return *this;
}
template <typename OtherLibObjT>
- bool operator==(const CommonValue<OtherLibObjT>& other) const noexcept
+ bool operator==(const CommonValue<OtherLibObjT> other) const noexcept
{
return static_cast<bool>(bt_value_is_equal(this->libObjPtr(), other.libObjPtr()));
}
template <typename OtherLibObjT>
- bool operator!=(const CommonValue<OtherLibObjT>& other) const noexcept
+ bool operator!=(const CommonValue<OtherLibObjT> other) const noexcept
{
return !(*this == other);
}
return Shared::createWithRef(*this);
}
+ template <typename ValueT>
+ ValueT as() const noexcept
+ {
+ return ValueT {this->libObjPtr()};
+ }
+
CommonNullValue<LibObjT> asNull() const noexcept;
CommonBoolValue<LibObjT> asBool() const noexcept;
CommonSignedIntegerValue<LibObjT> asSignedInteger() const noexcept;
}
template <typename OtherLibObjT>
- CommonNullValue(const CommonNullValue<OtherLibObjT>& val) noexcept : _ThisCommonValue {val}
+ CommonNullValue(const CommonNullValue<OtherLibObjT> val) noexcept : _ThisCommonValue {val}
{
}
template <typename OtherLibObjT>
- CommonNullValue<LibObjT>& operator=(const CommonNullValue<OtherLibObjT>& val) noexcept
+ CommonNullValue<LibObjT>& operator=(const CommonNullValue<OtherLibObjT> val) noexcept
{
_ThisCommonValue::operator=(val);
return *this;
}
template <typename OtherLibObjT>
- CommonBoolValue(const CommonBoolValue<OtherLibObjT>& val) noexcept : _ThisCommonValue {val}
+ CommonBoolValue(const CommonBoolValue<OtherLibObjT> val) noexcept : _ThisCommonValue {val}
{
}
}
template <typename OtherLibObjT>
- CommonBoolValue<LibObjT>& operator=(const CommonBoolValue<OtherLibObjT>& val) noexcept
+ CommonBoolValue<LibObjT>& operator=(const CommonBoolValue<OtherLibObjT> val) noexcept
{
_ThisCommonValue::operator=(val);
return *this;
}
template <typename OtherLibObjT>
- CommonUnsignedIntegerValue(const CommonUnsignedIntegerValue<OtherLibObjT>& val) noexcept :
+ CommonUnsignedIntegerValue(const CommonUnsignedIntegerValue<OtherLibObjT> val) noexcept :
_ThisCommonValue {val}
{
}
template <typename OtherLibObjT>
CommonUnsignedIntegerValue<LibObjT>&
- operator=(const CommonUnsignedIntegerValue<OtherLibObjT>& val) noexcept
+ operator=(const CommonUnsignedIntegerValue<OtherLibObjT> val) noexcept
{
static_assert(!std::is_const<LibObjT>::value, "`LibObjT` must NOT be `const`.");
}
template <typename OtherLibObjT>
- CommonSignedIntegerValue(const CommonSignedIntegerValue<OtherLibObjT>& val) noexcept :
+ CommonSignedIntegerValue(const CommonSignedIntegerValue<OtherLibObjT> val) noexcept :
_ThisCommonValue {val}
{
}
template <typename OtherLibObjT>
CommonSignedIntegerValue<LibObjT>&
- operator=(const CommonSignedIntegerValue<OtherLibObjT>& val) noexcept
+ operator=(const CommonSignedIntegerValue<OtherLibObjT> val) noexcept
{
_ThisCommonValue::operator=(val);
return *this;
}
template <typename OtherLibObjT>
- CommonRealValue(const CommonRealValue<OtherLibObjT>& val) noexcept : _ThisCommonValue {val}
+ CommonRealValue(const CommonRealValue<OtherLibObjT> val) noexcept : _ThisCommonValue {val}
{
}
template <typename OtherLibObjT>
- CommonRealValue<LibObjT>& operator=(const CommonRealValue<OtherLibObjT>& val) noexcept
+ CommonRealValue<LibObjT>& operator=(const CommonRealValue<OtherLibObjT> val) noexcept
{
_ThisCommonValue::operator=(val);
return *this;
}
template <typename OtherLibObjT>
- CommonStringValue(const CommonStringValue<OtherLibObjT>& val) noexcept : _ThisCommonValue {val}
+ CommonStringValue(const CommonStringValue<OtherLibObjT> val) noexcept : _ThisCommonValue {val}
{
}
template <typename OtherLibObjT>
- CommonStringValue<LibObjT>& operator=(const CommonStringValue<OtherLibObjT>& val) noexcept
+ CommonStringValue<LibObjT>& operator=(const CommonStringValue<OtherLibObjT> val) noexcept
{
_ThisCommonValue::operator=(val);
return *this;
const auto status = bt_value_string_set(this->libObjPtr(), rawVal);
if (status == BT_VALUE_STRING_SET_STATUS_MEMORY_ERROR) {
- throw LibMemoryError {};
+ throw MemoryError {};
}
return *this;
}
template <typename OtherLibObjT>
- CommonArrayValue(const CommonArrayValue<OtherLibObjT>& val) noexcept : _ThisCommonValue {val}
+ CommonArrayValue(const CommonArrayValue<OtherLibObjT> val) noexcept : _ThisCommonValue {val}
{
}
template <typename OtherLibObjT>
- CommonArrayValue<LibObjT>& operator=(const CommonArrayValue<OtherLibObjT>& val) noexcept
+ CommonArrayValue<LibObjT>& operator=(const CommonArrayValue<OtherLibObjT> val) noexcept
{
_ThisCommonValue::operator=(val);
return *this;
internal::CommonArrayValueSpec<LibObjT>::elementByIndex(this->libObjPtr(), index)};
}
- void append(const Value& val)
+ void append(const Value val)
{
static_assert(!std::is_const<LibObjT>::value, "`LibObjT` must NOT be `const`.");
CommonArrayValue<bt_value> appendEmptyArray();
CommonMapValue<bt_value> appendEmptyMap();
- void operator+=(const Value& val)
+ void operator+=(const Value val)
{
this->append(val);
}
void _handleAppendLibStatus(const bt_value_array_append_element_status status) const
{
if (status == BT_VALUE_ARRAY_APPEND_ELEMENT_STATUS_MEMORY_ERROR) {
- throw LibMemoryError {};
+ throw MemoryError {};
}
}
};
return;
case BT_VALUE_MAP_FOREACH_ENTRY_STATUS_USER_ERROR:
case BT_VALUE_MAP_FOREACH_ENTRY_STATUS_ERROR:
- throw LibError {};
+ throw Error {};
default:
bt_common_abort();
}
return;
case BT_VALUE_MAP_FOREACH_ENTRY_CONST_STATUS_USER_ERROR:
case BT_VALUE_MAP_FOREACH_ENTRY_CONST_STATUS_ERROR:
- throw LibError {};
+ throw Error {};
default:
bt_common_abort();
}
}
template <typename OtherLibObjT>
- CommonMapValue(const CommonMapValue<OtherLibObjT>& val) noexcept : _ThisCommonValue {val}
+ CommonMapValue(const CommonMapValue<OtherLibObjT> val) noexcept : _ThisCommonValue {val}
{
}
template <typename OtherLibObjT>
- CommonMapValue<LibObjT>& operator=(const CommonMapValue<OtherLibObjT>& val) noexcept
+ CommonMapValue<LibObjT>& operator=(const CommonMapValue<OtherLibObjT> val) noexcept
{
_ThisCommonValue::operator=(val);
return *this;
return this->hasEntry(key.data());
}
- void insert(const char * const key, const Value& val)
+ void insert(const char * const key, const Value val)
{
static_assert(!std::is_const<LibObjT>::value, "`LibObjT` must NOT be `const`.");
this->_handleInsertLibStatus(status);
}
- void insert(const std::string& key, const Value& val)
+ void insert(const std::string& key, const Value val)
{
this->insert(key.data(), val);
}
void _handleInsertLibStatus(const bt_value_map_insert_entry_status status) const
{
if (status == BT_VALUE_MAP_INSERT_ENTRY_STATUS_MEMORY_ERROR) {
- throw LibMemoryError {};
+ throw MemoryError {};
}
}
};