#pragma once #include #include #include #include namespace vcpkg::PortFileProvider { struct PortFileProvider { virtual Optional get_control_file(const std::string& src_name) const = 0; virtual std::vector load_all_control_files() const = 0; }; struct MapPortFileProvider : Util::ResourceBase, PortFileProvider { explicit MapPortFileProvider(const std::unordered_map& map); Optional get_control_file(const std::string& src_name) const override; std::vector load_all_control_files() const override; private: const std::unordered_map& ports; }; struct PathsPortFileProvider : Util::ResourceBase, PortFileProvider { explicit PathsPortFileProvider(const vcpkg::VcpkgPaths& paths, const std::vector* ports_dirs_paths); Optional get_control_file(const std::string& src_name) const override; std::vector load_all_control_files() const override; private: Files::Filesystem& filesystem; std::vector ports_dirs; mutable std::unordered_map cache; }; }