glbinding  3.0.2.58901078581f
A C++ binding for the OpenGL API, generated using the gl.xml specification.
glbinding::SharedBitfield< Type > Class Template Reference

A representation of a bitfield value that could be member of multiple bitfield types as allowed in OpenGL. This template is the break condition of a former SharedBitfield that got reduced to just one valid bitfield type through operations. More...

#include <glbinding/include/glbinding/SharedBitfield.h>

Inheritance diagram for glbinding::SharedBitfield< Type >:
glbinding::SharedBitfieldBase< std::underlying_type< Type >::type >

Public Types

using UnderlyingType = typename SharedBitfieldBase< typename std::underlying_type< Type >::type >::UnderlyingType
 inherit UnderlyingType declaration More...
 

Public Member Functions

template<typename ConstructionType >
GLBINDING_CONSTEXPR SharedBitfield (ConstructionType value)
 Constructor. More...
 
GLBINDING_CONSTEXPR SharedBitfield (typename std::underlying_type< Type >::type value)
 Constructor. More...
 
GLBINDING_CONSTEXPR operator Type () const
 Cast operator to allow for conversion of the generic value to a specific bitfield type. More...
 
template<typename... T>
GLBINDING_CONSTEXPR auto operator| (SharedBitfield< T... > other) const -> typename std::enable_if<!std::is_same< typename intersect_SharedBitfield< SharedBitfield< Type >, SharedBitfield< T... >>::type, SharedBitfield<>>::value, typename intersect_SharedBitfield< SharedBitfield< Type >, SharedBitfield< T... >>::type >::type
 Performs a bit-wise 'or' operation on the values of this and other while constraining the resulting shared bitfield types to the intersection. More...
 
template<typename... T>
auto operator|= (SharedBitfield< T... > other) -> typename std::enable_if<!std::is_same< typename intersect_SharedBitfield< SharedBitfield< Type >, SharedBitfield< T... >>::type, SharedBitfield<>>::value, SharedBitfield & >::type
 Performs a bit-wise 'or' assignment operation on the values of this and other, where type list of the right hand side has to be a superset of the types list of this SharedBitfield. More...
 
template<typename... T>
GLBINDING_CONSTEXPR auto operator& (SharedBitfield< T... > other) const -> typename std::enable_if<!std::is_same< typename intersect_SharedBitfield< SharedBitfield< Type >, SharedBitfield< T... >>::type, SharedBitfield<>>::value, typename intersect_SharedBitfield< SharedBitfield< Type >, SharedBitfield< T... >>::type >::type
 Performs a bit-wise 'and' operation on the values of this and other while constraining the resulting shared bitfield types to the intersection. More...
 
template<typename... T>
auto operator&= (SharedBitfield< T... > other) -> typename std::enable_if<!std::is_same< typename intersect_SharedBitfield< SharedBitfield< Type >, SharedBitfield< T... >>::type, SharedBitfield<>>::value, SharedBitfield & >::type
 Performs a bit-wise 'and' assignment operation on the values of this and other, where type list of the right hand side has to be a superset of the types list of this SharedBitfield. More...
 
template<typename... T>
GLBINDING_CONSTEXPR auto operator^ (SharedBitfield< T... > other) const -> typename std::enable_if<!std::is_same< typename intersect_SharedBitfield< SharedBitfield< Type >, SharedBitfield< T... >>::type, SharedBitfield<>>::value, typename intersect_SharedBitfield< SharedBitfield< Type >, SharedBitfield< T... >>::type >::type
 Performs a bit-wise 'xor' operation on the values of this and other while constraining the resulting shared bitfield types to the intersection. More...
 
template<typename... T>
auto operator^= (SharedBitfield< T... > other) -> typename std::enable_if<!std::is_same< typename intersect_SharedBitfield< SharedBitfield< Type >, SharedBitfield< T... >>::type, SharedBitfield<>>::value, SharedBitfield & >::type
 Performs a bit-wise 'xor' assignment operation on the values of this and other, where type list of the right hand side has to be a superset of the types list of this SharedBitfield. More...
 
template<typename... T>
GLBINDING_CONSTEXPR auto operator== (SharedBitfield< T... > other) const -> typename std::enable_if<!std::is_same< typename intersect_SharedBitfield< SharedBitfield< Type >, SharedBitfield< T... >>::type, SharedBitfield<>>::value, bool >::type
 Test for equality of the values of this SharedBitfield and the other SharedBitfield. More...
 
template<typename T >
GLBINDING_CONSTEXPR auto operator== (T other) const -> typename std::enable_if< is_member_of_SharedBitfield< T, Type >::value, bool >::type
 Test for equality of the value of this SharedBitfield and the other bitfield value. More...
 

Detailed Description

template<typename Type>
class glbinding::SharedBitfield< Type >

A representation of a bitfield value that could be member of multiple bitfield types as allowed in OpenGL. This template is the break condition of a former SharedBitfield that got reduced to just one valid bitfield type through operations.

Parameters
TypeThe one valid bitfield type for the given value.

Member Typedef Documentation

template<typename Type >
using glbinding::SharedBitfield< Type >::UnderlyingType = typename SharedBitfieldBase<typename std::underlying_type<Type>::type>::UnderlyingType

inherit UnderlyingType declaration

Constructor & Destructor Documentation

template<typename Type >
template<typename ConstructionType >
GLBINDING_CONSTEXPR glbinding::SharedBitfield< Type >::SharedBitfield ( ConstructionType  value)
inline

Constructor.

Template Parameters
ConstructionTypeThe type of the passed value which is implicitly convertible to the UnderlyingType
Parameters
[in]valueThe value of this SharedBitfield
template<typename Type >
GLBINDING_CONSTEXPR glbinding::SharedBitfield< Type >::SharedBitfield ( typename std::underlying_type< Type >::type  value)
inline

Constructor.

Parameters
[in]valueThe value of this SharedBitfield

Member Function Documentation

template<typename Type >
GLBINDING_CONSTEXPR glbinding::SharedBitfield< Type >::operator Type ( ) const
inline

Cast operator to allow for conversion of the generic value to a specific bitfield type.

Returns
The bitfield value as type of Type.
template<typename Type >
template<typename... T>
GLBINDING_CONSTEXPR auto glbinding::SharedBitfield< Type >::operator| ( SharedBitfield< T... >  other) const -> typename std::enable_if<!std::is_same<typename intersect_SharedBitfield<SharedBitfield<Type>, SharedBitfield<T...>>::type, SharedBitfield<>>::value, typename intersect_SharedBitfield<SharedBitfield<Type>, SharedBitfield<T...>>::type>::type
inline

Performs a bit-wise 'or' operation on the values of this and other while constraining the resulting shared bitfield types to the intersection.

Parameters
[in]otherThe SharedBitfield instance to operate with
Returns
The new SharedBitfield with intersected types list and computed value
Remarks
This method is not visible to the compiler if the operands don't share any bitfield type (the intersection is empty) and thus results in a compiler error

References glbinding::SharedBitfield.

template<typename Type >
template<typename... T>
auto glbinding::SharedBitfield< Type >::operator|= ( SharedBitfield< T... >  other) -> typename std::enable_if<!std::is_same<typename intersect_SharedBitfield<SharedBitfield<Type>, SharedBitfield<T...>>::type, SharedBitfield<>>::value, SharedBitfield &>::type
inline

Performs a bit-wise 'or' assignment operation on the values of this and other, where type list of the right hand side has to be a superset of the types list of this SharedBitfield.

Parameters
[in]otherThe SharedBitfield instance to operate with
Remarks
This method is not visible to the compiler if the operands don't share any bitfield type (the intersection is empty) and thus results in a compiler error
template<typename Type >
template<typename... T>
GLBINDING_CONSTEXPR auto glbinding::SharedBitfield< Type >::operator& ( SharedBitfield< T... >  other) const -> typename std::enable_if<!std::is_same<typename intersect_SharedBitfield<SharedBitfield<Type>, SharedBitfield<T...>>::type, SharedBitfield<>>::value, typename intersect_SharedBitfield<SharedBitfield<Type>, SharedBitfield<T...>>::type>::type
inline

Performs a bit-wise 'and' operation on the values of this and other while constraining the resulting shared bitfield types to the intersection.

Parameters
[in]otherThe SharedBitfield instance to operate with
Returns
The new SharedBitfield with intersected types list and computed value
Remarks
This method is not visible to the compiler if the operands don't share any bitfield type (the intersection is empty) and thus results in a compiler error

References glbinding::SharedBitfield.

template<typename Type >
template<typename... T>
auto glbinding::SharedBitfield< Type >::operator&= ( SharedBitfield< T... >  other) -> typename std::enable_if<!std::is_same<typename intersect_SharedBitfield<SharedBitfield<Type>, SharedBitfield<T...>>::type, SharedBitfield<>>::value, SharedBitfield &>::type
inline

Performs a bit-wise 'and' assignment operation on the values of this and other, where type list of the right hand side has to be a superset of the types list of this SharedBitfield.

Parameters
[in]otherThe SharedBitfield instance to operate with
Remarks
This method is not visible to the compiler if the operands don't share any bitfield type (the intersection is empty) and thus results in a compiler error
template<typename Type >
template<typename... T>
GLBINDING_CONSTEXPR auto glbinding::SharedBitfield< Type >::operator^ ( SharedBitfield< T... >  other) const -> typename std::enable_if<!std::is_same<typename intersect_SharedBitfield<SharedBitfield<Type>, SharedBitfield<T...>>::type, SharedBitfield<>>::value, typename intersect_SharedBitfield<SharedBitfield<Type>, SharedBitfield<T...>>::type>::type
inline

Performs a bit-wise 'xor' operation on the values of this and other while constraining the resulting shared bitfield types to the intersection.

Parameters
[in]otherThe SharedBitfield instance to operate with
Returns
The new SharedBitfield with intersected types list and computed value
Remarks
This method is not visible to the compiler if the operands don't share any bitfield type (the intersection is empty) and thus results in a compiler error

References glbinding::SharedBitfield.

template<typename Type >
template<typename... T>
auto glbinding::SharedBitfield< Type >::operator^= ( SharedBitfield< T... >  other) -> typename std::enable_if<!std::is_same<typename intersect_SharedBitfield<SharedBitfield<Type>, SharedBitfield<T...>>::type, SharedBitfield<>>::value, SharedBitfield &>::type
inline

Performs a bit-wise 'xor' assignment operation on the values of this and other, where type list of the right hand side has to be a superset of the types list of this SharedBitfield.

Parameters
[in]otherThe SharedBitfield instance to operate with
Remarks
This method is not visible to the compiler if the operands don't share any bitfield type (the intersection is empty) and thus results in a compiler error
template<typename Type >
template<typename... T>
GLBINDING_CONSTEXPR auto glbinding::SharedBitfield< Type >::operator== ( SharedBitfield< T... >  other) const -> typename std::enable_if<!std::is_same<typename intersect_SharedBitfield<SharedBitfield<Type>, SharedBitfield<T...>>::type, SharedBitfield<>>::value, bool>::type
inline

Test for equality of the values of this SharedBitfield and the other SharedBitfield.

Parameters
[in]otherThe SharedBitfield instance to operate with
Returns
'true' if the values equals, else 'false'
Remarks
This method is not visible to the compiler if the operands don't share any bitfield type (the intersection is empty) and thus results in a compiler error
template<typename Type >
template<typename T>
GLBINDING_CONSTEXPR auto glbinding::SharedBitfield< Type >::operator== ( other) const -> typename std::enable_if<is_member_of_SharedBitfield<T, Type>::value, bool>::type
inline

Test for equality of the value of this SharedBitfield and the other bitfield value.

Template Parameters
TThe bitfield type of the value to test
Parameters
[in]otherThe bitfield value to operate with
Returns
'true' if the values equals, else 'false'
Remarks
This method is not visible to the compiler if the this SharedBitfield type list contains the type T

The documentation for this class was generated from the following files: