Files
FS/include/fs/IPack.h
T
jeanlemotan b344afa9fe First
2024-07-02 18:12:23 +02:00

46 lines
1.3 KiB
C++

#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<EnumerateEntry> enumerate(const AbsPath& i_path) const = 0;
virtual cppcoro::generator<EnumerateEntry> enumerateRecursively(const AbsPath& i_path) const = 0;
virtual ConvertToNativePathResult convertToNativePath(const AbsPath& i_path) const = 0;
protected:
IPack() = default;
};
}