common_funcs: Add enum flag bitwise shift operator overloads
This adds bitwise shift operator overloads (<<, >>, <<=, >>=) in the macro DECLARE_ENUM_FLAG_OPERATORS(type)
This commit is contained in:
		| @@ -61,6 +61,14 @@ __declspec(dllimport) void __stdcall DebugBreak(void); | ||||
|         using T = std::underlying_type_t<type>;                                                    \ | ||||
|         return static_cast<type>(static_cast<T>(a) ^ static_cast<T>(b));                           \ | ||||
|     }                                                                                              \ | ||||
|     [[nodiscard]] constexpr type operator<<(type a, type b) noexcept {                             \ | ||||
|         using T = std::underlying_type_t<type>;                                                    \ | ||||
|         return static_cast<type>(static_cast<T>(a) << static_cast<T>(b));                          \ | ||||
|     }                                                                                              \ | ||||
|     [[nodiscard]] constexpr type operator>>(type a, type b) noexcept {                             \ | ||||
|         using T = std::underlying_type_t<type>;                                                    \ | ||||
|         return static_cast<type>(static_cast<T>(a) >> static_cast<T>(b));                          \ | ||||
|     }                                                                                              \ | ||||
|     constexpr type& operator|=(type& a, type b) noexcept {                                         \ | ||||
|         a = a | b;                                                                                 \ | ||||
|         return a;                                                                                  \ | ||||
| @@ -73,6 +81,14 @@ __declspec(dllimport) void __stdcall DebugBreak(void); | ||||
|         a = a ^ b;                                                                                 \ | ||||
|         return a;                                                                                  \ | ||||
|     }                                                                                              \ | ||||
|     constexpr type& operator<<=(type& a, type b) noexcept {                                        \ | ||||
|         a = a << b;                                                                                \ | ||||
|         return a;                                                                                  \ | ||||
|     }                                                                                              \ | ||||
|     constexpr type& operator>>=(type& a, type b) noexcept {                                        \ | ||||
|         a = a >> b;                                                                                \ | ||||
|         return a;                                                                                  \ | ||||
|     }                                                                                              \ | ||||
|     [[nodiscard]] constexpr type operator~(type key) noexcept {                                    \ | ||||
|         using T = std::underlying_type_t<type>;                                                    \ | ||||
|         return static_cast<type>(~static_cast<T>(key));                                            \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user