pmt: Improve pmt & libpartition_map

- Change some operator returnn types.
 - Use std::map instead of std::unordered on magic number maps.
 - Some improvements.
This commit is contained in:
2025-09-01 01:21:06 +03:00
parent fea9c834fc
commit e7baf4f5bc
15 changed files with 115 additions and 94 deletions

View File

@@ -17,15 +17,15 @@
#include <fcntl.h>
#include <libhelper/lib.hpp>
#include <libpartition_map/lib.hpp>
#include <map>
#include <sstream>
#include <string>
#include <unistd.h>
#include <unordered_map>
#include "PartitionManager/PartitionManager.hpp"
namespace PartitionMap::Extras {
std::unordered_map<uint64_t, std::string> FileSystemMagicMap = {
std::map<uint64_t, std::string> FileSystemMagicMap = {
{FileSystemMagic::EXTFS_FS, "EXT2/3/4"},
{FileSystemMagic::F2FS_FS, "F2FS"},
{FileSystemMagic::EROFS_FS, "EROFS"},
@@ -36,7 +36,7 @@ std::unordered_map<uint64_t, std::string> FileSystemMagicMap = {
{FileSystemMagic::NTFS_FS, "NTFS"},
{FileSystemMagic::MSDOS_FS, "MSDOS"}};
std::unordered_map<uint64_t, std::string> AndroidMagicMap = {
std::map<uint64_t, std::string> AndroidMagicMap = {
{AndroidMagic::BOOT_IMAGE, "Android Boot Image"},
{AndroidMagic::VBOOT_IMAGE, "Android Vendor Boot Image"},
{AndroidMagic::LK_IMAGE, "Android LK (Bootloader)"},
@@ -47,7 +47,7 @@ std::unordered_map<uint64_t, std::string> AndroidMagicMap = {
{AndroidMagic::ELF, "ELF"},
{AndroidMagic::RAW, "Raw Data"}};
std::unordered_map<uint64_t, std::string> MagicMap = {
std::map<uint64_t, std::string> MagicMap = {
{AndroidMagic::BOOT_IMAGE, "Android Boot Image"},
{AndroidMagic::VBOOT_IMAGE, "Android Vendor Boot Image"},
{AndroidMagic::LK_IMAGE, "Android LK (Bootloader)"},

View File

@@ -288,7 +288,7 @@ bool basic_partition_map_builder::empty() const {
}
void basic_partition_map_builder::doForAllPartitions(
const std::function<bool(std::string, Map_t::BasicInf)> &func) const {
const std::function<bool(std::string, BasicInf)> &func) const {
_map_build_check();
LOGN(MAP, INFO) << "Doing input function for all partitions." << std::endl;
@@ -303,7 +303,7 @@ void basic_partition_map_builder::doForAllPartitions(
}
void basic_partition_map_builder::doForPhysicalPartitions(
const std::function<bool(std::string, Map_t::BasicInf)> &func) const {
const std::function<bool(std::string, BasicInf)> &func) const {
_map_build_check();
LOGN(MAP, INFO) << "Doing input function for physical partitions."
@@ -320,7 +320,7 @@ void basic_partition_map_builder::doForPhysicalPartitions(
}
void basic_partition_map_builder::doForLogicalPartitions(
const std::function<bool(std::string, Map_t::BasicInf)> &func) const {
const std::function<bool(std::string, BasicInf)> &func) const {
_map_build_check();
LOGN(MAP, INFO) << "Doing input function for logical partitions."
@@ -338,7 +338,7 @@ void basic_partition_map_builder::doForLogicalPartitions(
void basic_partition_map_builder::doForPartitionList(
const std::vector<std::string> &partitions,
const std::function<bool(std::string, Map_t::BasicInf)> &func) const {
const std::function<bool(std::string, BasicInf)> &func) const {
_map_build_check();
LOGN(MAP, INFO) << "Doing input function for input partition list."
@@ -388,8 +388,7 @@ const Map_t &basic_partition_map_builder::operator*() const {
return _current_map;
}
basic_partition_map_builder::operator std::vector<
std::tuple<std::string, uint64_t, bool>>() const {
basic_partition_map_builder::operator std::vector<Info>() const {
return _current_map;
}

View File

@@ -162,7 +162,7 @@ bool basic_partition_map::is_logical(const std::string_view name) const {
return false;
}
basic_partition_map::_returnable_entry
_returnable_entry
basic_partition_map::get_all(const std::string_view name) const {
if (const int pos = _index_of(name); name == _data[pos].name)
return _returnable_entry{_data[pos].props.size, _data[pos].props.isLogical};
@@ -229,13 +229,12 @@ bool basic_partition_map::operator!=(const basic_partition_map &other) const {
return !(*this == other);
}
basic_partition_map::operator std::vector<
std::tuple<std::string, uint64_t, bool>>() const {
std::vector<std::tuple<std::string, uint64_t, bool>> v;
basic_partition_map::operator std::vector<Info>() const {
std::vector<Info> v;
if (_count == 0) return {};
for (size_t i = 0; i < _count; i++)
v.emplace_back(_data[i].name, _data[i].props.size,
_data[i].props.isLogical);
v.push_back(
{_data[i].name, {_data[i].props.size, _data[i].props.isLogical}});
return v;
}