Use std::string_view in loader code

This commit is contained in:
Megamouse 2026-06-14 06:27:29 +02:00
parent b8ca6d953f
commit 7a4ec42362
3 changed files with 5 additions and 19 deletions

View File

@ -396,24 +396,13 @@ namespace psf
return found->second.as_integer();
}
bool check_registry(const registry& psf, std::function<bool(bool ok, const std::string& key, const entry& value)> validate, std::source_location src_loc)
bool check_registry(const registry& psf, std::source_location src_loc)
{
bool psf_ok = true;
for (const auto& [key, value] : psf)
{
bool entry_ok = value.is_valid();
if (validate)
{
// Validate against a custom condition as well (forward error)
if (!validate(entry_ok, key, value))
{
entry_ok = false;
}
}
if (!entry_ok)
if (!value.is_valid())
{
if (value.type() == format::string)
{
@ -424,10 +413,7 @@ namespace psf
// TODO: Better logging of other types
psf_log.error("Entry %s is invalid.%s", key, value.as_string(), src_loc);
}
}
if (!entry_ok)
{
// Do not break, run over all entries in order to report all errors
psf_ok = false;
}

View File

@ -103,7 +103,7 @@ namespace psf
// Get integer value or default value
u32 get_integer(const registry& psf, std::string_view key, u32 def = 0);
bool check_registry(const registry& psf, std::function<bool(bool ok, const std::string& key, const entry& value)> validate = {}, std::source_location src_loc = std::source_location::current());
bool check_registry(const registry& psf, std::source_location src_loc = std::source_location::current());
// Assign new entry
inline void assign(registry& psf, std::string_view key, entry&& _entry)

View File

@ -565,11 +565,11 @@ void tar_object::save_directory(const std::string& target_path, utils::serial& a
}
};
auto save_header = [&](const fs::stat_t& stat, const std::string& name)
auto save_header = [&](const fs::stat_t& stat, std::string_view name)
{
static_assert(sizeof(TARHeader) == 512);
std::string_view saved_path{name.size() == src_dir_pos ? name.c_str() : &::at32(name, src_dir_pos), name.size() - src_dir_pos};
std::string_view saved_path = name.size() == src_dir_pos ? name : name.substr(src_dir_pos);
if (is_null)
{