From f7b50f08d693412ef46cc6245881ea7b069b31eb Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Mon, 23 Jul 2018 11:34:48 -0400 Subject: [PATCH] Add operator& for FileSys::Mode --- src/core/file_sys/mode.h | 4 ++++ src/core/file_sys/vfs_real.cpp | 22 ++++++++++------------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/core/file_sys/mode.h b/src/core/file_sys/mode.h index 3b0b8e577f..c952056682 100644 --- a/src/core/file_sys/mode.h +++ b/src/core/file_sys/mode.h @@ -16,4 +16,8 @@ enum class Mode : u32 { WriteAppend = 6, }; +inline u32 operator&(Mode lhs, Mode rhs) { + return static_cast(lhs) & static_cast(rhs); +} + } // namespace FileSys diff --git a/src/core/file_sys/vfs_real.cpp b/src/core/file_sys/vfs_real.cpp index fefb232aaf..42e91d9420 100644 --- a/src/core/file_sys/vfs_real.cpp +++ b/src/core/file_sys/vfs_real.cpp @@ -15,21 +15,19 @@ namespace FileSys { static std::string ModeFlagsToString(Mode mode) { std::string mode_str; - u32 mode_flags = static_cast(mode); // Calculate the correct open mode for the file. - if ((mode_flags & static_cast(Mode::Read)) && - (mode_flags & static_cast(Mode::Write))) { - if (mode_flags & static_cast(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(Mode::Read)) + if (mode & Mode::Read) mode_str = "r"; - else if (mode_flags & static_cast(Mode::Append)) + else if (mode & Mode::Append) mode_str = "a"; - else if (mode_flags & static_cast(Mode::Write)) + else if (mode & Mode::Write) mode_str = "w"; } @@ -62,11 +60,11 @@ std::shared_ptr RealVfsFile::GetContainingDirectory() const { } bool RealVfsFile::IsWritable() const { - return static_cast(perms) & static_cast(Mode::WriteAppend); + return perms & Mode::WriteAppend; } bool RealVfsFile::IsReadable() const { - return static_cast(perms) & static_cast(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(perms) & static_cast(Mode::WriteAppend))) + if (!FileUtil::Exists(path) && perms & Mode::WriteAppend) FileUtil::CreateDir(path); if (perms == Mode::Append) @@ -129,11 +127,11 @@ std::vector> RealVfsDirectory::GetSubdirectories() } bool RealVfsDirectory::IsWritable() const { - return static_cast(perms) & static_cast(Mode::WriteAppend); + return perms & Mode::WriteAppend; } bool RealVfsDirectory::IsReadable() const { - return static_cast(perms) & static_cast(Mode::ReadWrite); + return perms & Mode::ReadWrite; } std::string RealVfsDirectory::GetName() const {