1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-29 18:32:36 +00:00
OpenMW/components/vfs/archive.hpp
2023-12-25 12:21:01 +01:00

42 lines
853 B
C++

#ifndef OPENMW_COMPONENTS_RESOURCE_ARCHIVE_H
#define OPENMW_COMPONENTS_RESOURCE_ARCHIVE_H
#include <filesystem>
#include <map>
#include <string_view>
#include <components/files/istreamptr.hpp>
namespace VFS
{
class File
{
public:
virtual ~File() = default;
virtual Files::IStreamPtr open() = 0;
virtual std::filesystem::path getPath() = 0;
};
using FileMap = std::map<std::string, File*, std::less<>>;
class Archive
{
public:
virtual ~Archive() = default;
/// List all resources contained in this archive.
virtual void listResources(FileMap& out) = 0;
/// True if this archive contains the provided normalized file.
virtual bool contains(std::string_view file) const = 0;
virtual std::string getDescription() const = 0;
};
}
#endif