Go to the documentation of this file. 1 #ifndef EGLPLUS_BASIC_EGL_API_HPP
9 #define EGLPLUS_BASIC_EGL_API_HPP
17 template <
typename ApiTraits>
20 ,
public basic_egl_operations<ApiTraits>
21 ,
public basic_egl_constants<ApiTraits> {
23 basic_egl_api(ApiTraits traits)
24 : ApiTraits{std::move(traits)}
25 , basic_egl_operations<ApiTraits>{*
static_cast<ApiTraits*
>(
this)}
26 , basic_egl_constants<ApiTraits>{
27 *
static_cast<ApiTraits*
>(
this),
28 *
static_cast<basic_egl_operations<ApiTraits>*
>(
this)} {}
31 : basic_egl_api{ApiTraits{}} {}
33 auto operations() noexcept -> basic_egl_operations<ApiTraits>& {
37 auto operations() const noexcept -> const basic_egl_operations<ApiTraits>& {
41 auto constants() noexcept -> basic_egl_constants<ApiTraits>& {
45 auto constants() const noexcept -> const basic_egl_constants<ApiTraits>& {
50 template <std::
size_t I,
typename ApiTraits>
51 auto get(basic_egl_api<ApiTraits>& x) noexcept ->
52 typename std::tuple_element<I, basic_egl_api<ApiTraits>>::type& {
56 template <std::
size_t I,
typename ApiTraits>
57 auto get(
const basic_egl_api<ApiTraits>& x) noexcept ->
const
58 typename std::tuple_element<I, basic_egl_api<ApiTraits>>::type& {
67 template <
typename ApiTraits>
68 struct tuple_size<
eagine::eglp::basic_egl_api<ApiTraits>>
69 :
public std::integral_constant<std::size_t, 2> {};
71 template <
typename ApiTraits>
72 struct tuple_element<0,
eagine::eglp::basic_egl_api<ApiTraits>> {
76 template <
typename ApiTraits>
77 struct tuple_element<1,
eagine::eglp::basic_egl_api<ApiTraits>> {
83 #endif // EGLPLUS_BASIC_EGL_API_HPP
EGL-related code is placed in this namespace.
Definition: eglplus.hpp:11
Class wrapping the functions from the EGL API.
Definition: api.hpp:37
Common code is placed in this namespace.
Definition: eagine.hpp:21
Class wrapping the constants from the EGL API.
Definition: constants.hpp:21