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