Add operator& for FileSys::Mode

This commit is contained in:
Zach Hilman
2018-07-23 11:34:48 -04:00
parent a903d3be96
commit f7b50f08d6
2 changed files with 14 additions and 12 deletions

View File

@@ -16,4 +16,8 @@ enum class Mode : u32 {
WriteAppend = 6,
};
inline u32 operator&(Mode lhs, Mode rhs) {
return static_cast<u32>(lhs) & static_cast<u32>(rhs);
}
} // namespace FileSys

View File

@@ -15,21 +15,19 @@ namespace FileSys {
static std::string ModeFlagsToString(Mode mode) {
std::string mode_str;
u32 mode_flags = static_cast<u32>(mode);
// Calculate the correct open mode for the file.
if ((mode_flags & static_cast<u32>(Mode::Read)) &&
(mode_flags & static_cast<u32>(Mode::Write))) {
if (mode_flags & static_cast<u32>(Mode::Append))
if (mode & Mode::Read && mode & Mode::Write) {
if (mode & Mode::Append)
mode_str = "a+";
else
mode_str = "r+";
} else {
if (mode_flags & static_cast<u32>(Mode::Read))
if (mode & Mode::Read)
mode_str = "r";
else if (mode_flags & static_cast<u32>(Mode::Append))
else if (mode & Mode::Append)
mode_str = "a";
else if (mode_flags & static_cast<u32>(Mode::Write))
else if (mode & Mode::Write)
mode_str = "w";
}
@@ -62,11 +60,11 @@ std::shared_ptr<VfsDirectory> RealVfsFile::GetContainingDirectory() const {
}
bool RealVfsFile::IsWritable() const {
return static_cast<u32>(perms) & static_cast<u32>(Mode::WriteAppend);
return perms & Mode::WriteAppend;
}
bool RealVfsFile::IsReadable() const {
return static_cast<u32>(perms) & static_cast<u32>(Mode::ReadWrite);
return perms & Mode::ReadWrite;
}
size_t RealVfsFile::Read(u8* data, size_t length, size_t offset) const {
@@ -102,7 +100,7 @@ RealVfsDirectory::RealVfsDirectory(const std::string& path_, Mode perms_)
path_components(FileUtil::SplitPathComponents(path)),
parent_components(FileUtil::SliceVector(path_components, 0, path_components.size() - 1)),
perms(perms_) {
if (!FileUtil::Exists(path) && (static_cast<u32>(perms) & static_cast<u32>(Mode::WriteAppend)))
if (!FileUtil::Exists(path) && perms & Mode::WriteAppend)
FileUtil::CreateDir(path);
if (perms == Mode::Append)
@@ -129,11 +127,11 @@ std::vector<std::shared_ptr<VfsDirectory>> RealVfsDirectory::GetSubdirectories()
}
bool RealVfsDirectory::IsWritable() const {
return static_cast<u32>(perms) & static_cast<u32>(Mode::WriteAppend);
return perms & Mode::WriteAppend;
}
bool RealVfsDirectory::IsReadable() const {
return static_cast<u32>(perms) & static_cast<u32>(Mode::ReadWrite);
return perms & Mode::ReadWrite;
}
std::string RealVfsDirectory::GetName() const {