Extract PPBR package path validation

This commit is contained in:
2026-06-04 14:56:29 +02:00
parent 6ab64ccc82
commit 394979e4fc
11 changed files with 444 additions and 32 deletions

View File

@@ -0,0 +1,53 @@
#pragma once
#include "foundation/result.h"
#include <cstddef>
#include <cstdint>
#include <span>
#include <string>
#include <string_view>
namespace pp::assets {
constexpr std::size_t ppbr_header_size = 8;
constexpr std::uint16_t ppbr_legacy_major_version = 0;
constexpr std::uint16_t ppbr_legacy_minor_version = 1;
enum class PpbrDataDirectoryPolicy {
next_to_package,
override_directory,
};
struct PpbrHeader {
std::uint16_t major = 0;
std::uint16_t minor = 0;
};
struct PpbrExportPaths {
std::string package_path;
std::string directory;
std::string stem;
std::string extension;
std::string data_directory;
bool data_directory_enabled = false;
};
[[nodiscard]] pp::foundation::Status validate_ppbr_header(
std::string_view magic,
std::uint16_t major,
std::uint16_t minor) noexcept;
[[nodiscard]] pp::foundation::Result<PpbrHeader> parse_ppbr_header(
std::span<const std::byte> bytes) noexcept;
[[nodiscard]] pp::foundation::Result<std::string> normalize_ppbr_export_path(
std::string_view requested_path);
[[nodiscard]] pp::foundation::Result<PpbrExportPaths> plan_ppbr_export_paths(
std::string_view requested_path,
std::string_view override_data_directory,
bool export_data,
PpbrDataDirectoryPolicy data_directory_policy);
} // namespace pp::assets