Advertisement
denesik

Untitled

May 5th, 2022
1,023
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #pragma once
  2.  
  3.  
  4.  
  5. #define DEFINE_ENUM_FLAGS_OPERATORS(ENUMTYPE) \
  6. inline ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b)         { return static_cast<ENUMTYPE>(static_cast<std::underlying_type<ENUMTYPE>::type>(a) | static_cast<std::underlying_type<ENUMTYPE>::type>(b)); } \
  7. inline ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b)         { return static_cast<ENUMTYPE>(static_cast<std::underlying_type<ENUMTYPE>::type>(a) & static_cast<std::underlying_type<ENUMTYPE>::type>(b)); } \
  8. inline ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b)         { return static_cast<ENUMTYPE>(static_cast<std::underlying_type<ENUMTYPE>::type>(a) ^ static_cast<std::underlying_type<ENUMTYPE>::type>(b)); } \
  9. inline ENUMTYPE operator ~ (ENUMTYPE a)                                 { return static_cast<ENUMTYPE>(~static_cast<std::underlying_type<ENUMTYPE>::type>(a)); } \
  10. inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b)  { a = static_cast<ENUMTYPE>(static_cast<std::underlying_type<ENUMTYPE>::type>(a) | static_cast<std::underlying_type<ENUMTYPE>::type>(b)); return a; } \
  11. inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b)  { a = static_cast<ENUMTYPE>(static_cast<std::underlying_type<ENUMTYPE>::type>(a) & static_cast<std::underlying_type<ENUMTYPE>::type>(b)); return a; } \
  12. inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b)  { a = static_cast<ENUMTYPE>(static_cast<std::underlying_type<ENUMTYPE>::type>(a) ^ static_cast<std::underlying_type<ENUMTYPE>::type>(b)); return a; }
  13.  
  14.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement