X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=src%2Fcpp-common%2Fbt2%2Ffield.hpp;h=a59ac9fdf686305060b96f26327dd133bb23978b;hb=edfe13aa4e848381ab2a5b206da9ae353122e476;hp=25d0034ffe4bbb18f3869abc8bc545c9dfea6579;hpb=4927bae7b89dff01618509f362c9400ee1993e94;p=babeltrace.git diff --git a/src/cpp-common/bt2/field.hpp b/src/cpp-common/bt2/field.hpp index 25d0034f..a59ac9fd 100644 --- a/src/cpp-common/bt2/field.hpp +++ b/src/cpp-common/bt2/field.hpp @@ -108,12 +108,12 @@ public: } template - CommonField(const CommonField& val) noexcept : _ThisBorrowedObj {val} + CommonField(const CommonField val) noexcept : _ThisBorrowedObj {val} { } template - _ThisCommonField& operator=(const CommonField& val) noexcept + _ThisCommonField& operator=(const CommonField val) noexcept { _ThisBorrowedObj::operator=(val); return *this; @@ -204,6 +204,12 @@ public: return this->cls().isVariant(); } + template + FieldT as() const noexcept + { + return FieldT {this->libObjPtr()}; + } + CommonBoolField asBool() const noexcept; CommonBitArrayField asBitArray() const noexcept; CommonUnsignedIntegerField asUnsignedInteger() const noexcept; @@ -259,12 +265,12 @@ public: } template - CommonBoolField(const CommonBoolField& val) noexcept : _ThisCommonField {val} + CommonBoolField(const CommonBoolField val) noexcept : _ThisCommonField {val} { } template - CommonBoolField& operator=(const CommonBoolField& val) noexcept + CommonBoolField& operator=(const CommonBoolField val) noexcept { _ThisCommonField::operator=(val); return *this; @@ -329,13 +335,13 @@ public: } template - CommonBitArrayField(const CommonBitArrayField& val) noexcept : + CommonBitArrayField(const CommonBitArrayField val) noexcept : _ThisCommonField {val} { } template - CommonBitArrayField& operator=(const CommonBitArrayField& val) noexcept + CommonBitArrayField& operator=(const CommonBitArrayField val) noexcept { _ThisCommonField::operator=(val); return *this; @@ -396,7 +402,7 @@ struct TypeDescr : public BitArrayFieldTypeDescr } /* namespace internal */ template -class CommonUnsignedIntegerField final : public CommonField +class CommonUnsignedIntegerField : public CommonField { private: using typename CommonField::_ThisCommonField; @@ -418,14 +424,14 @@ public: } template - CommonUnsignedIntegerField(const CommonUnsignedIntegerField& val) noexcept : + CommonUnsignedIntegerField(const CommonUnsignedIntegerField val) noexcept : _ThisCommonField {val} { } template _ThisCommonUnsignedIntegerField& - operator=(const CommonUnsignedIntegerField& val) noexcept + operator=(const CommonUnsignedIntegerField val) noexcept { _ThisCommonField::operator=(val); return *this; @@ -485,7 +491,7 @@ struct TypeDescr : public UnsignedIntegerFieldTypeDes } /* namespace internal */ template -class CommonSignedIntegerField final : public CommonField +class CommonSignedIntegerField : public CommonField { private: using typename CommonField::_ThisCommonField; @@ -495,7 +501,7 @@ protected: using _ThisCommonSignedIntegerField = CommonSignedIntegerField; public: - using Value = std::uint64_t; + using Value = std::int64_t; using Class = typename std::conditional::value, ConstIntegerFieldClass, IntegerFieldClass>::type; @@ -507,14 +513,14 @@ public: } template - CommonSignedIntegerField(const CommonSignedIntegerField& val) noexcept : + CommonSignedIntegerField(const CommonSignedIntegerField val) noexcept : _ThisCommonField {val} { } template _ThisCommonSignedIntegerField& - operator=(const CommonSignedIntegerField& val) noexcept + operator=(const CommonSignedIntegerField val) noexcept { _ThisCommonField::operator=(val); return *this; @@ -623,7 +629,7 @@ public: } template - CommonUnsignedEnumerationField(const CommonUnsignedEnumerationField& val) noexcept + CommonUnsignedEnumerationField(const CommonUnsignedEnumerationField val) noexcept : _ThisCommonUnsignedIntegerField {val} { @@ -631,7 +637,7 @@ public: template CommonUnsignedEnumerationField& - operator=(const CommonUnsignedEnumerationField& val) noexcept + operator=(const CommonUnsignedEnumerationField val) noexcept { _ThisCommonUnsignedIntegerField::operator=(val); return *this; @@ -656,7 +662,7 @@ public: &labelArray, &count); if (status == BT_FIELD_ENUMERATION_GET_MAPPING_LABELS_STATUS_MEMORY_ERROR) { - throw LibMemoryError {}; + throw MemoryError {}; } return EnumerationFieldClassMappingLabels {labelArray, count}; @@ -705,14 +711,14 @@ public: } template - CommonSignedEnumerationField(const CommonSignedEnumerationField& val) noexcept : + CommonSignedEnumerationField(const CommonSignedEnumerationField val) noexcept : _ThisCommonSignedIntegerField {val} { } template CommonSignedEnumerationField& - operator=(const CommonSignedEnumerationField& val) noexcept + operator=(const CommonSignedEnumerationField val) noexcept { _ThisCommonSignedIntegerField::operator=(val); return *this; @@ -737,7 +743,7 @@ public: bt_field_enumeration_signed_get_mapping_labels(this->libObjPtr(), &labelArray, &count); if (status == BT_FIELD_ENUMERATION_GET_MAPPING_LABELS_STATUS_MEMORY_ERROR) { - throw LibMemoryError {}; + throw MemoryError {}; } return EnumerationFieldClassMappingLabels {labelArray, count}; @@ -784,7 +790,7 @@ public: } template - CommonSinglePrecisionRealField(const CommonSinglePrecisionRealField& val) noexcept + CommonSinglePrecisionRealField(const CommonSinglePrecisionRealField val) noexcept : _ThisCommonField {val} { @@ -792,7 +798,7 @@ public: template CommonSinglePrecisionRealField& - operator=(const CommonSinglePrecisionRealField& val) noexcept + operator=(const CommonSinglePrecisionRealField val) noexcept { _ThisCommonField::operator=(val); return *this; @@ -857,7 +863,7 @@ public: } template - CommonDoublePrecisionRealField(const CommonDoublePrecisionRealField& val) noexcept + CommonDoublePrecisionRealField(const CommonDoublePrecisionRealField val) noexcept : _ThisCommonField {val} { @@ -865,7 +871,7 @@ public: template CommonDoublePrecisionRealField& - operator=(const CommonDoublePrecisionRealField& val) noexcept + operator=(const CommonDoublePrecisionRealField val) noexcept { _ThisCommonField::operator=(val); return *this; @@ -875,13 +881,13 @@ public: { static_assert(!std::is_const::value, "`LibObjT` must NOT be `const`."); - bt_field_real_single_precision_set_value(this->libObjPtr(), val); + bt_field_real_double_precision_set_value(this->libObjPtr(), val); return *this; } Value value() const noexcept { - return bt_field_real_single_precision_get_value(this->libObjPtr()); + return bt_field_real_double_precision_get_value(this->libObjPtr()); } operator Value() const noexcept @@ -927,31 +933,31 @@ public: } template - CommonStringField(const CommonStringField& val) noexcept : _ThisCommonField {val} + CommonStringField(const CommonStringField val) noexcept : _ThisCommonField {val} { } template - CommonStringField& operator=(const CommonStringField& val) noexcept + CommonStringField& operator=(const CommonStringField val) noexcept { _ThisCommonField::operator=(val); return *this; } - CommonStringField& operator=(const char * const val) noexcept + CommonStringField& operator=(const char * const val) { static_assert(!std::is_const::value, "`LibObjT` must NOT be `const`."); const auto status = bt_field_string_set_value(this->libObjPtr(), val); if (status == BT_FIELD_STRING_SET_VALUE_STATUS_MEMORY_ERROR) { - throw LibMemoryError {}; + throw MemoryError {}; } return *this; } - CommonStringField& operator=(const std::string& val) noexcept + CommonStringField& operator=(const std::string& val) { return *this = val.data(); } @@ -1047,13 +1053,13 @@ public: } template - CommonStructureField(const CommonStructureField& val) noexcept : + CommonStructureField(const CommonStructureField val) noexcept : _ThisCommonField {val} { } template - CommonStructureField& operator=(const CommonStructureField& val) noexcept + CommonStructureField& operator=(const CommonStructureField val) noexcept { _ThisCommonField::operator=(val); return *this; @@ -1190,12 +1196,12 @@ public: } template - CommonArrayField(const CommonArrayField& val) noexcept : _ThisCommonField {val} + CommonArrayField(const CommonArrayField val) noexcept : _ThisCommonField {val} { } template - _ThisCommonArrayField& operator=(const CommonArrayField& val) noexcept + _ThisCommonArrayField& operator=(const CommonArrayField val) noexcept { _ThisCommonField::operator=(val); return *this; @@ -1267,14 +1273,14 @@ public: } template - CommonDynamicArrayField(const CommonDynamicArrayField& val) noexcept : + CommonDynamicArrayField(const CommonDynamicArrayField val) noexcept : _ThisCommonArrayField {val} { } template CommonDynamicArrayField& - operator=(const CommonDynamicArrayField& val) noexcept + operator=(const CommonDynamicArrayField val) noexcept { _ThisCommonArrayField::operator=(val); return *this; @@ -1292,7 +1298,7 @@ public: const auto status = bt_field_array_dynamic_set_length(this->libObjPtr(), length); if (status == BT_FIELD_DYNAMIC_ARRAY_SET_LENGTH_STATUS_MEMORY_ERROR) { - throw LibMemoryError {}; + throw MemoryError {}; } } }; @@ -1361,12 +1367,12 @@ public: } template - CommonOptionField(const CommonOptionField& val) noexcept : _ThisCommonField {val} + CommonOptionField(const CommonOptionField val) noexcept : _ThisCommonField {val} { } template - CommonOptionField& operator=(const CommonOptionField& val) noexcept + CommonOptionField& operator=(const CommonOptionField val) noexcept { _ThisCommonField::operator=(val); return *this; @@ -1483,13 +1489,12 @@ public: } template - CommonVariantField(const CommonVariantField& val) noexcept : - _ThisCommonField {val} + CommonVariantField(const CommonVariantField val) noexcept : _ThisCommonField {val} { } template - CommonVariantField& operator=(const CommonVariantField& val) noexcept + CommonVariantField& operator=(const CommonVariantField val) noexcept { _ThisCommonField::operator=(val); return *this;