Go to the documentation of this file. 1 #ifndef OALPLUS_BASIC_AL_API_HPP
9 #define OALPLUS_BASIC_AL_API_HPP
17 template <
typename ApiTraits>
20 ,
public basic_al_operations<ApiTraits>
21 ,
public basic_al_constants<ApiTraits> {
23 basic_al_api(ApiTraits traits)
24 : ApiTraits{std::move(traits)}
25 , basic_al_operations<ApiTraits>{*
static_cast<ApiTraits*
>(
this)}
26 , basic_al_constants<ApiTraits>{
27 *
static_cast<ApiTraits*
>(
this),
28 *
static_cast<basic_al_operations<ApiTraits>*
>(
this)} {}
31 : basic_al_api{ApiTraits{}} {}
34 template <std::
size_t I,
typename ApiTraits>
35 auto get(basic_al_api<ApiTraits>& x) noexcept ->
36 typename std::tuple_element<I, basic_al_api<ApiTraits>>::type& {
40 template <std::
size_t I,
typename ApiTraits>
41 auto get(
const basic_al_api<ApiTraits>& x) noexcept ->
const
42 typename std::tuple_element<I, basic_al_api<ApiTraits>>::type& {
51 template <
typename ApiTraits>
52 struct tuple_size<
eagine::oalp::basic_al_api<ApiTraits>>
53 :
public std::integral_constant<std::size_t, 2> {};
55 template <
typename ApiTraits>
56 struct tuple_element<0,
eagine::oalp::basic_al_api<ApiTraits>> {
60 template <
typename ApiTraits>
61 struct tuple_element<1,
eagine::oalp::basic_al_api<ApiTraits>> {
67 #endif // OALPLUS_BASIC_AL_API_HPP
Common code is placed in this namespace.
Definition: eagine.hpp:21
Class wrapping the functions from the AL API.
Definition: api.hpp:26
Class wrapping the constants from the AL API.
Definition: constants.hpp:21
AL-related code is placed in this namespace.
Definition: oalplus.hpp:11