Files
product-vamp/include/vamp_zero/score.hpp
T
khodowany fa385205e2
ci / checks (push) Failing after 1h5m14s
Shared Catalog
2026-09-17 01:25:26 -05:00

36 lines
1.1 KiB
C++

#pragma once
#include <expected>
#include <functional>
#include <memory>
#include <string>
#include <vector>
#include <luma.hpp>
#include <vamp_zero/types.hpp>
namespace vamp_zero {
class score_page_cache {
public:
explicit score_page_cache(std::function<std::expected<std::shared_ptr<luma::texture>, modulus::error>(std::string const &)> loader);
auto get(std::string path) -> std::expected<std::shared_ptr<luma::texture>, modulus::error>;
auto clear() -> void;
auto size() const -> std::size_t;
private:
struct entry {
std::string path{};
std::shared_ptr<luma::texture> texture{};
};
std::function<std::expected<std::shared_ptr<luma::texture>, modulus::error>(std::string const &)> loader_{};
std::vector<entry> entries_{};
};
auto score_page_count(vamp_zero::score_document const &score) -> std::size_t;
auto validated_page_path(vamp_zero::score_document const &score, std::size_t index) -> std::expected<std::string, modulus::error>;
auto validate_score_page(vamp_zero::score_document const &score, std::size_t index) -> std::expected<void, modulus::error>;
}