Add VfsFile and VfsDirectory classes

This commit is contained in:
Zach Hilman
2018-06-16 23:09:10 -04:00
parent 15e68cdbaa
commit 767e6f56e5
3 changed files with 81 additions and 0 deletions

View File

@@ -29,6 +29,8 @@ add_library(core STATIC
file_sys/sdmc_factory.cpp
file_sys/sdmc_factory.h
file_sys/storage.h
file_sys/vfs.cpp
file_sys/vfs.h
frontend/emu_window.cpp
frontend/emu_window.h
frontend/framebuffer_layout.cpp

View File

@@ -0,0 +1,7 @@
// Copyright 2018 yuzu emulator team
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/file_sys/vfs.h"
namespace FileSys {}

72
src/core/file_sys/vfs.h Normal file
View File

@@ -0,0 +1,72 @@
// Copyright 2018 yuzu emulator team
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#pragma once
#include "boost/optional.hpp"
#include "common/common_types.h"
#include <string>
#include <vector>
namespace FileSys
{
struct VfsDirectory;
struct VfsFile : NonCopyable
{
bool IsReady();
bool IsGood();
operator bool();
void ResetState();
std::string GetName();
u64 GetSize();
bool Resize(u64 new_size);
boost::optional<VfsDirectory> GetContainingDirectory();
bool IsWritable();
bool IsReadable();
std::vector<u8> ReadBytes(u64 offset, u64 length);
template <typename T> u64 ReadBytes(T* data, u64 offset, u64 length);
template <typename T> std::vector<T> ReadArray(u64 offset, u64 number_elements);
template <typename T> u64 ReadArray(T* data, u64 offset, u64 number_elements);
std::vector<u8> ReadAllBytes();
void WriteBytes(const std::vector<u8>& data, u64 offset);
void ReplaceBytes(const std::vector<u8>& data);
bool Rename(const std::string& name);
};
struct VfsDirectory : NonCopyable
{
std::vector<VfsFile> GetFiles();
boost::optional<VfsFile> GetFile(const std::string& name);
std::vector<VfsDirectory> GetSubdirectories();
boost::optional<VfsFile> GetSubdirectory(const std::string& name);
bool IsWritable();
bool IsReadable();
bool IsRoot();
std::string GetName();
u64 GetSize();
boost::optional<VfsDirectory> GetParentDirectory();
boost::optional<VfsDirectory> CreateSubdirectory(const std::string& name);
boost::optional<VfsFile> CreateFile(const std::string& name);
bool DeleteSubdirectory(const std::string& name);
bool DeleteFile(const std::string& name);
bool Rename(const std::string& name);
bool Copy(const std::string& src, const std::string& dest);
};
}