27 std::shared_ptr<VirtualFilesystem> impl,
30 impl_{std::move(impl)},
31 prefix_{std::move(prefix)}
36 return impl_->resource_exists(resource_path);
41 return impl_->open(prefix_ / resource_path);
46 return impl_->slurp(prefix_ / resource_path);
54 template<
typename StringLike>
56 requires std::constructible_from<ResourceLoader, StringLike&&>
63 return impl_->iterate_directory(prefix_ / resource_path);
66 template<std::derived_from<VirtualFilesystem> TResourceLoader,
typename... Args>
67 requires std::constructible_from<TResourceLoader, Args&&...>
70 std::shared_ptr<VirtualFilesystem> impl_;
74 template<std::derived_from<VirtualFilesystem> TResourceLoader,
typename... Args>
75 requires std::constructible_from<TResourceLoader, Args&&...>
78 return ResourceLoader{std::make_shared<TResourceLoader>(std::forward<Args>(args)...)};
Definition resource_loader.h:24
ResourceLoader(std::shared_ptr< VirtualFilesystem > impl, ResourcePath prefix=ResourcePath{})
Definition resource_loader.h:26
friend ResourceLoader make_resource_loader(Args &&...)
ResourceLoader with_prefix(const ResourcePath &prefix) const
Definition resource_loader.h:49
bool resource_exists(const ResourcePath &resource_path)
Definition resource_loader.h:34
cpp23::generator< ResourceDirectoryEntry > iterate_directory(const ResourcePath &resource_path)
Definition resource_loader.h:61
ResourceLoader with_prefix(StringLike &&str) const
Definition resource_loader.h:55
std::string slurp(const ResourcePath &resource_path)
Definition resource_loader.h:44
ResourceStream open(const ResourcePath &resource_path)
Definition resource_loader.h:39
Definition resource_path.h:12
Definition resource_stream.h:11
Definition generator.h:32
Definition custom_decoration_generator.h:5
ResourceLoader make_resource_loader(Args &&... args)
Definition resource_loader.h:76