Go to the documentation of this file. 14 #ifndef ECVL_MACROS_H_ 15 #define ECVL_MACROS_H_ 20 #define DEFINE_ENUM_CLASS_OR_OPERATOR(class_name) \ 21 constexpr enum class_name operator|(const enum class_name self_value, const enum class_name in_value) { \ 22 return static_cast<enum class_name>(static_cast<uint32_t>(self_value) | static_cast<uint32_t>(in_value)); \ 28 #define DEFINE_ENUM_CLASS_AND_OPERATOR(class_name) \ 29 constexpr bool operator&(const enum class_name self_value, const enum class_name in_value) { \ 30 return static_cast<bool>(static_cast<uint32_t>(self_value) & static_cast<uint32_t>(in_value)); \ 33 #define DEFINE_ENUM_CLASS_FLAGS(class_name, ...) \ 34 enum class class_name : uint32_t { \ 37 DEFINE_ENUM_CLASS_OR_OPERATOR(class_name) \ 38 DEFINE_ENUM_CLASS_AND_OPERATOR(class_name) \ 40 #endif // !ECVL_MACROS_H_