#pragma once //#pragma warning( disable : 4250) #include "fs/IFilesystem.h" #include "fs/AbsPath.h" #include "fs/Error.h" #include "fs/Mode.h" #include "fs/Api.h" namespace fs { class ISource; class IMapSource; class FS_API IPack { public: virtual ~IPack() = default; using SourceFlag = IFilesystem::SourceFlag; using SourceFlags = IFilesystem::SourceFlags; using MapView = IFilesystem::MapView; virtual OpenSourceResult openSource(const AbsPath& i_path, SourceFlags i_flags = SourceFlags()) const = 0; virtual OpenStreamSourceResult openStreamSource(const AbsPath& i_path, SourceFlags i_flags = SourceFlags()) const = 0; virtual OpenMapSourceResult openMapSource(const AbsPath& i_path, MapView i_mapView = MapView(), SourceFlags i_flags = SourceFlags()) const = 0; virtual IsFileResult isFile(const AbsPath& i_path) const = 0; virtual IsFolderResult isFolder(const AbsPath& i_path) const = 0; virtual ExistsResult exists(const AbsPath& i_path) const = 0; virtual GetStatResult getStat(const AbsPath& i_path) const = 0; virtual cppcoro::generator enumerate(const AbsPath& i_path) const = 0; virtual cppcoro::generator enumerateRecursively(const AbsPath& i_path) const = 0; virtual ConvertToNativePathResult convertToNativePath(const AbsPath& i_path) const = 0; protected: IPack() = default; }; }