diff options
Diffstat (limited to 'drm/DrmProperty.cpp')
-rw-r--r-- | drm/DrmProperty.cpp | 75 |
1 files changed, 24 insertions, 51 deletions
diff --git a/drm/DrmProperty.cpp b/drm/DrmProperty.cpp index 32f1c62..938b3ad 100644 --- a/drm/DrmProperty.cpp +++ b/drm/DrmProperty.cpp @@ -31,7 +31,7 @@ namespace android { DrmProperty::DrmPropertyEnum::DrmPropertyEnum(drm_mode_property_enum *e) - : value_(e->value), name_(e->name) { + : value(e->value), name(e->name) { } DrmProperty::DrmProperty(uint32_t obj_id, drmModePropertyPtr p, @@ -47,70 +47,43 @@ void DrmProperty::Init(uint32_t obj_id, drmModePropertyPtr p, uint64_t value) { value_ = value; for (int i = 0; i < p->count_values; ++i) + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic): values_.emplace_back(p->values[i]); for (int i = 0; i < p->count_enums; ++i) - enums_.emplace_back(DrmPropertyEnum(&p->enums[i])); + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic): + enums_.emplace_back(&p->enums[i]); for (int i = 0; i < p->count_blobs; ++i) + // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic): blob_ids_.emplace_back(p->blob_ids[i]); - - if (flags_ & DRM_MODE_PROP_RANGE) - type_ = DRM_PROPERTY_TYPE_INT; - else if (flags_ & DRM_MODE_PROP_ENUM) - type_ = DRM_PROPERTY_TYPE_ENUM; - else if (flags_ & DRM_MODE_PROP_OBJECT) - type_ = DRM_PROPERTY_TYPE_OBJECT; - else if (flags_ & DRM_MODE_PROP_BLOB) - type_ = DRM_PROPERTY_TYPE_BLOB; - else if (flags_ & DRM_MODE_PROP_BITMASK) - type_ = DRM_PROPERTY_TYPE_BITMASK; -} - -uint32_t DrmProperty::id() const { - return id_; -} - -std::string DrmProperty::name() const { - return name_; } -std::tuple<int, uint64_t> DrmProperty::value() const { - if (type_ == DRM_PROPERTY_TYPE_BLOB) - return std::make_tuple(0, value_); +std::optional<uint64_t> DrmProperty::GetValue() const { + if ((flags_ & DRM_MODE_PROP_BLOB) != 0) + return value_; if (values_.empty()) - return std::make_tuple(-ENOENT, 0); - - switch (type_) { - case DRM_PROPERTY_TYPE_INT: - return std::make_tuple(0, value_); - - case DRM_PROPERTY_TYPE_ENUM: - if (value_ >= enums_.size()) - return std::make_tuple(-ENOENT, 0); + return {}; - return std::make_tuple(0, enums_[value_].value_); + if ((flags_ & DRM_MODE_PROP_RANGE) != 0) + return value_; - case DRM_PROPERTY_TYPE_OBJECT: - return std::make_tuple(0, value_); + if ((flags_ & DRM_MODE_PROP_ENUM) != 0) { + if (value_ >= enums_.size()) + return {}; - case DRM_PROPERTY_TYPE_BITMASK: - default: - return std::make_tuple(-EINVAL, 0); + return enums_[value_].value; } -} -bool DrmProperty::is_immutable() const { - return id_ && (flags_ & DRM_MODE_PROP_IMMUTABLE); -} + if ((flags_ & DRM_MODE_PROP_OBJECT) != 0) + return value_; -bool DrmProperty::is_range() const { - return id_ && (flags_ & DRM_MODE_PROP_RANGE); + return {}; } -std::tuple<int, uint64_t> DrmProperty::range_min() const { - if (!is_range()) +std::tuple<int, uint64_t> DrmProperty::RangeMin() const { + if (!IsRange()) return std::make_tuple(-EINVAL, 0); if (values_.empty()) return std::make_tuple(-ENOENT, 0); @@ -118,8 +91,8 @@ std::tuple<int, uint64_t> DrmProperty::range_min() const { return std::make_tuple(0, values_[0]); } -std::tuple<int, uint64_t> DrmProperty::range_max() const { - if (!is_range()) +std::tuple<int, uint64_t> DrmProperty::RangeMax() const { + if (!IsRange()) return std::make_tuple(-EINVAL, 0); if (values_.size() < 2) return std::make_tuple(-ENOENT, 0); @@ -130,8 +103,8 @@ std::tuple<int, uint64_t> DrmProperty::range_max() const { std::tuple<uint64_t, int> DrmProperty::GetEnumValueWithName( const std::string &name) const { for (const auto &it : enums_) { - if (it.name_ == name) { - return std::make_tuple(it.value_, 0); + if (it.name == name) { + return std::make_tuple(it.value, 0); } } |