From a3d104cf8b6a0ec845519f6156812f95b6df1178 Mon Sep 17 00:00:00 2001 From: Martchus Date: Wed, 14 Aug 2019 01:22:33 +0200 Subject: [PATCH] Reduce code for flag enum classes --- io/passwordfile.h | 40 ++++------------------------------------ 1 file changed, 4 insertions(+), 36 deletions(-) diff --git a/io/passwordfile.h b/io/passwordfile.h index e10041f..6f34ca7 100644 --- a/io/passwordfile.h +++ b/io/passwordfile.h @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -25,24 +26,6 @@ enum class PasswordFileOpenFlags : std::uint64_t { std::string PASSWORD_FILE_EXPORT flagsToString(PasswordFileOpenFlags flags); -constexpr PasswordFileOpenFlags operator|(PasswordFileOpenFlags lhs, PasswordFileOpenFlags rhs) -{ - return static_cast( - static_cast::type>(lhs) | static_cast::type>(rhs)); -} - -constexpr PasswordFileOpenFlags &operator|=(PasswordFileOpenFlags &lhs, PasswordFileOpenFlags rhs) -{ - return lhs = static_cast(static_cast::type>(lhs) - | static_cast::type>(rhs)); -} - -constexpr bool operator&(PasswordFileOpenFlags lhs, PasswordFileOpenFlags rhs) -{ - return static_cast( - static_cast::type>(lhs) & static_cast::type>(rhs)); -} - enum class PasswordFileSaveFlags : std::uint64_t { None = 0, Encryption = 1, @@ -54,24 +37,6 @@ enum class PasswordFileSaveFlags : std::uint64_t { std::string PASSWORD_FILE_EXPORT flagsToString(PasswordFileSaveFlags flags); -constexpr PasswordFileSaveFlags operator|(PasswordFileSaveFlags lhs, PasswordFileSaveFlags rhs) -{ - return static_cast( - static_cast::type>(lhs) | static_cast::type>(rhs)); -} - -constexpr PasswordFileSaveFlags &operator|=(PasswordFileSaveFlags &lhs, PasswordFileSaveFlags rhs) -{ - return lhs = static_cast(static_cast::type>(lhs) - | static_cast::type>(rhs)); -} - -constexpr bool operator&(PasswordFileSaveFlags lhs, PasswordFileSaveFlags rhs) -{ - return static_cast( - static_cast::type>(lhs) & static_cast::type>(rhs)); -} - class PASSWORD_FILE_EXPORT PasswordFile { public: explicit PasswordFile(); @@ -253,4 +218,7 @@ inline PasswordFileSaveFlags PasswordFile::saveOptions() const } // namespace Io +CPP_UTILITIES_MARK_FLAG_ENUM_CLASS(Io, Io::PasswordFileOpenFlags); +CPP_UTILITIES_MARK_FLAG_ENUM_CLASS(Io, Io::PasswordFileSaveFlags); + #endif // PASSWORD_FILE_IO_PASSWORD_FILE_H