#pragma once #include namespace glbinding { GLBINDING_CONSTEXPR CallbackMask operator~(const CallbackMask a) { using callback_mask_t = std::underlying_type::type; return static_cast(~static_cast(a)); } GLBINDING_CONSTEXPR CallbackMask operator|(const CallbackMask a, const CallbackMask b) { using callback_mask_t = std::underlying_type::type; return static_cast(static_cast(a) | static_cast(b)); } GLBINDING_CONSTEXPR CallbackMask operator&(const CallbackMask a, const CallbackMask b) { using callback_mask_t = std::underlying_type::type; return static_cast(static_cast(a) & static_cast(b)); } GLBINDING_CONSTEXPR CallbackMask operator^(const CallbackMask a, const CallbackMask b) { using callback_mask_t = std::underlying_type::type; return static_cast(static_cast(a) ^ static_cast(b)); } CallbackMask& operator|=(CallbackMask& a, const CallbackMask b) { a = a | b; return a; } CallbackMask& operator&=(CallbackMask& a, const CallbackMask b) { a = a & b; return a; } CallbackMask& operator^=(CallbackMask& a, const CallbackMask b) { a = a ^ b; return a; } } // namespace glbinding