From 1984825dec66ba38a7f47d8e52ef57da9ec43de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ya=C4=9F=C4=B1z=20Zengin?= Date: Sun, 7 Sep 2025 10:53:59 +0300 Subject: [PATCH] pmt: add [] operators to Map_t and builder --- .../include/libpartition_map/lib.hpp | 13 +++++++++++++ srclib/libpartition_map/src/PartitionMap.cpp | 8 ++++++++ srclib/libpartition_map/src/Type.cpp | 14 ++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/srclib/libpartition_map/include/libpartition_map/lib.hpp b/srclib/libpartition_map/include/libpartition_map/lib.hpp index dd072b0..112e890 100644 --- a/srclib/libpartition_map/include/libpartition_map/lib.hpp +++ b/srclib/libpartition_map/include/libpartition_map/lib.hpp @@ -84,6 +84,9 @@ public: bool operator==(const basic_partition_map &other) const; bool operator!=(const basic_partition_map &other) const; + Info operator[](int index) const; + BasicInf operator[](const std::string_view& name) const; + operator std::vector() const; operator int() const; @@ -350,6 +353,16 @@ public: */ const Map_t &operator*() const; + /** + * Get Info structure with given index + */ + Info operator[](int index) const; + + /** + * Get BasicInfo structure with given index + */ + BasicInf operator[](const std::string_view& name) const; + /** * Get map contents as vector (PartitionManager::Info type). */ diff --git a/srclib/libpartition_map/src/PartitionMap.cpp b/srclib/libpartition_map/src/PartitionMap.cpp index f9f684b..a8916cf 100644 --- a/srclib/libpartition_map/src/PartitionMap.cpp +++ b/srclib/libpartition_map/src/PartitionMap.cpp @@ -416,6 +416,14 @@ const Map_t &basic_partition_map_builder::operator*() const { return _current_map; } +Info basic_partition_map_builder::operator[](const int index) const { + return _current_map[index]; +} + +BasicInf basic_partition_map_builder::operator[](const std::string_view& name) const { + return _current_map[name]; +} + basic_partition_map_builder::operator std::vector() const { return _current_map; } diff --git a/srclib/libpartition_map/src/Type.cpp b/srclib/libpartition_map/src/Type.cpp index 9c24dcc..077999e 100644 --- a/srclib/libpartition_map/src/Type.cpp +++ b/srclib/libpartition_map/src/Type.cpp @@ -229,6 +229,20 @@ bool basic_partition_map::operator!=(const basic_partition_map &other) const { return !(*this == other); } +Info basic_partition_map::operator[](const int index) const { + if (_count == 0 || index >= _count) return {}; + return _data[index]; +} + +BasicInf basic_partition_map::operator[](const std::string_view& name) const { + if (_count == 0) return {}; + + if (const int i = _index_of(name); name == _data[i].name) + return {_data[i].props.size, _data[i].props.isLogical}; + + return {}; +} + basic_partition_map::operator std::vector() const { std::vector v; if (_count == 0) return {};