22template <
typename Type>
23template <
typename ConstructionType>
25:
SharedBitfieldBase<typename std::underlying_type<Type>::type>(static_cast<typename std::underlying_type<Type>::type>(value))
30template <
typename Type>
36template <
typename Type>
39 return static_cast<Type
>(this->m_value);
42template <
typename Type>
43template <
typename... T>
49template <
typename Type>
50template <
typename... T>
53 this->m_value |=
static_cast<decltype(this-
>m_value)>(other);
58template <
typename Type>
59template <
typename... T>
65template <
typename Type>
66template <
typename... T>
69 this->m_value &=
static_cast<decltype(this-
>m_value)>(other);
74template <
typename Type>
75template <
typename... T>
81template <
typename Type>
82template <
typename... T>
85 this->m_value ^=
static_cast<decltype(this-
>m_value)>(other);
90template <
typename Type>
91template <
typename... T>
97template <
typename Type>
105template <
typename Type,
typename... Types>
106template <
typename ConstructionType>
108:
SharedBitfield<Types...>(static_cast<typename std::underlying_type<Type>::type>(value))
113template <
typename Type,
typename... Types>
119template <
typename Type,
typename... Types>
122 return static_cast<Type
>(this->m_value);
125template <
typename Type,
typename... Types>
126template <
typename... T>
132template <
typename Type,
typename... Types>
133template <
typename... T>
136 this->m_value |=
static_cast<decltype(this-
>m_value)>(other);
141template <
typename Type,
typename... Types>
142template <
typename... T>
148template <
typename Type,
typename... Types>
149template <
typename... T>
152 this->m_value &=
static_cast<decltype(this-
>m_value)>(other);
157template <
typename Type,
typename... Types>
158template <
typename... T>
164template <
typename Type,
typename... Types>
165template <
typename... T>
168 this->m_value ^=
static_cast<decltype(this-
>m_value)>(other);
173template <
typename Type,
typename... Types>
174template <
typename... T>
180template <
typename Type,
typename... Types>
188template <
typename Enum,
typename ConvertibleEnum>
189typename std::enable_if<std::is_base_of<SharedBitfieldBase<typename std::underlying_type<typename std::enable_if<std::is_enum<Enum>::value, Enum>::type>::type>, ConvertibleEnum>::value, Enum>::type
192 return a |
static_cast<Enum
>(b);
195template <
typename ConvertibleEnum,
typename Enum>
196typename std::enable_if<std::is_base_of<SharedBitfieldBase<typename std::underlying_type<typename std::enable_if<std::is_enum<Enum>::value, Enum>::type>::type>, ConvertibleEnum>::value, Enum>::type
199 return static_cast<Enum
>(a) | b;
202template <
typename Enum,
typename ConvertibleEnum>
203typename std::enable_if<std::is_base_of<SharedBitfieldBase<typename std::underlying_type<typename std::enable_if<std::is_enum<Enum>::value, Enum>::type>::type>, ConvertibleEnum>::value, Enum>::type
206 return a |=
static_cast<Enum
>(b);
209template <
typename Enum,
typename ConvertibleEnum>
210typename std::enable_if<std::is_base_of<SharedBitfieldBase<typename std::underlying_type<typename std::enable_if<std::is_enum<Enum>::value, Enum>::type>::type>, ConvertibleEnum>::value, Enum>::type
213 return a &
static_cast<Enum
>(b);
216template <
typename ConvertibleEnum,
typename Enum>
217typename std::enable_if<std::is_base_of<SharedBitfieldBase<typename std::underlying_type<typename std::enable_if<std::is_enum<Enum>::value, Enum>::type>::type>, ConvertibleEnum>::value, Enum>::type
220 return static_cast<Enum
>(a) & b;
223template <
typename Enum,
typename ConvertibleEnum>
224typename std::enable_if<std::is_base_of<SharedBitfieldBase<typename std::underlying_type<typename std::enable_if<std::is_enum<Enum>::value, Enum>::type>::type>, ConvertibleEnum>::value, Enum>::type
227 return a &=
static_cast<Enum
>(b);
230template <
typename Enum,
typename ConvertibleEnum>
231typename std::enable_if<std::is_base_of<SharedBitfieldBase<typename std::underlying_type<typename std::enable_if<std::is_enum<Enum>::value, Enum>::type>::type>, ConvertibleEnum>::value, Enum>::type
234 return a ^
static_cast<Enum
>(b);
237template <
typename ConvertibleEnum,
typename Enum>
238typename std::enable_if<std::is_base_of<SharedBitfieldBase<typename std::underlying_type<typename std::enable_if<std::is_enum<Enum>::value, Enum>::type>::type>, ConvertibleEnum>::value, Enum>::type
241 return static_cast<Enum
>(a) ^ b;
244template <
typename Enum,
typename ConvertibleEnum>
245typename std::enable_if<std::is_base_of<SharedBitfieldBase<typename std::underlying_type<typename std::enable_if<std::is_enum<Enum>::value, Enum>::type>::type>, ConvertibleEnum>::value, Enum>::type
248 return a ^=
static_cast<Enum
>(b);
typename SharedBitfield< Types... >::UnderlyingType UnderlyingType
inherit UnderlyingType declaration
Definition SharedBitfield.h:326
typename SharedBitfieldBase< typename std::underlying_type< Type >::type >::UnderlyingType UnderlyingType
inherit UnderlyingType declaration
Definition SharedBitfield.h:167
Invalid SharedBitfield class as it contains no valid bitfield types.
Definition SharedBitfield.h:153
The base class of a SharedBitfield, containing the actual (and convertible) bitfield value.
Definition SharedBitfield.h:122
SharedBitfieldBase(T value)
Constructor.
Definition SharedBitfield.inl:10
A representation of a bitfield value that could be member of multiple bitfield types as allowed in Op...
Definition SharedBitfield.h:18
Contains all the classes of glbinding.
GLBINDING_API CallbackMask operator^(CallbackMask a, CallbackMask b)
External operator for bit-wise 'xor' of CallbackMasks.
GLBINDING_API CallbackMask & operator|=(CallbackMask &a, CallbackMask b)
External operator for bit-wise 'or' assignment of CallbackMasks.
GLBINDING_API CallbackMask & operator^=(CallbackMask &a, CallbackMask b)
External operator for bit-wise 'xor' assignment of CallbackMasks.
GLBINDING_API CallbackMask operator&(CallbackMask a, CallbackMask b)
External operator for bit-wise 'and' of CallbackMasks.
GLBINDING_API CallbackMask operator|(CallbackMask a, CallbackMask b)
External operator for bit-wise 'or' of CallbackMasks.
GLBINDING_API CallbackMask & operator&=(CallbackMask &a, CallbackMask b)
External operator for bit-wise 'and' assignment of CallbackMasks.
Break condition for the SharedBitfield intersection.
Definition SharedBitfield.h:88
Break condition for the is_member_of_SharedBitfield metaprogramming.
Definition SharedBitfield.h:35