#pragma once #include "fs/IPack.h" #include "fs/Api.h" namespace fs { ////////////////////////////////////////////////////////////////////////// class FS_API FolderPack : virtual public IPack { public: explicit FolderPack(AbsPath location); FolderPack(tl::lent_ref filesystem, AbsPath location); ~FolderPack() override = default; OpenSourceResult openSource(const AbsPath& path, SourceFlags flags = SourceFlags()) const override; OpenStreamSourceResult openStreamSource(const AbsPath& path, SourceFlags flags = SourceFlags()) const override; OpenMapSourceResult openMapSource(const AbsPath& path, MapView mapView = MapView(), SourceFlags flags = SourceFlags()) const override; IsFileResult isFile(const AbsPath& path) const override; IsFolderResult isFolder(const AbsPath& path) const override; ExistsResult exists(const AbsPath& path) const override; GetStatResult getStat(const AbsPath& path) const override; cppcoro::generator enumerate(const AbsPath& path) const override; cppcoro::generator enumerateRecursively(const AbsPath& path) const override; ConvertToNativePathResult convertToNativePath(const AbsPath& path) const override; protected: AbsPath convertToUnderlyingPath(const AbsPath& path) const; tl::lent_ref m_filesystem; AbsPath m_location; }; ////////////////////////////////////////////////////////////////////////// }