HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
audio_direction.hpp
1// Copyright Take Vos 2021-2022.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5#pragma once
6
7#include "../cast.hpp"
8#include "../enum_metadata.hpp"
9
10namespace hi::inline v1 {
11
12enum class audio_direction : unsigned char { none = 0b00, input = 0b01, output = 0b10, bidirectional = 0b11 };
13
14[[nodiscard]] constexpr audio_direction operator&(audio_direction const& lhs, audio_direction const& rhs) noexcept
15{
16 return static_cast<audio_direction>(to_underlying(lhs) & to_underlying(rhs));
17}
18
19[[nodiscard]] constexpr audio_direction operator|(audio_direction const& lhs, audio_direction const& rhs) noexcept
20{
21 return static_cast<audio_direction>(to_underlying(lhs) | to_underlying(rhs));
22}
23
24[[nodiscard]] constexpr bool any(audio_direction const &rhs) noexcept
25{
26 return to_bool(to_underlying(rhs));
27}
28
29// clang-format off
30constexpr auto audio_direction_metadata = enum_metadata{
31 audio_direction::none, "none",
32 audio_direction::input, "input",
33 audio_direction::output, "output",
34 audio_direction::bidirectional, "bidirectional"
35};
36// clang-format on
37
38}
39
40template<typename CharT>
41struct std::formatter<hi::audio_direction, CharT> : std::formatter<std::string_view, CharT> {
42 auto format(hi::audio_direction const& t, auto& fc)
43 {
44 return std::formatter<std::string_view, CharT>::format(hi::audio_direction_metadata[t], fc);
45 }
46};
DOXYGEN BUG.
Definition algorithm.hpp:15
constexpr alignment operator|(horizontal_alignment lhs, vertical_alignment rhs) noexcept
Combine vertical and horizontal alignment.
Definition alignment.hpp:200
The HikoGUI namespace.
Definition ascii.hpp:19