1 /*
2  * This file is auto-generated.  DO NOT MODIFY.
3  * Using: out/host/linux-x86/bin/aidl --lang=ndk -Weverything -Wno-missing-permission-annotation -Werror -Weverything --structured --version 4 --hash notfrozen -t --stability vintf --min_sdk_version 29 --previous_api_dir=system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/3 --previous_hash 0c86a38729dd5d560fe3a0eca6aa9d8cf83efb00 --ninja -d out/soong/.intermediates/system/hardware/interfaces/media/android.media.audio.common.types-V4-ndk-source/gen/staging/android/media/audio/common/AudioPolicyForceUse.cpp.d -h out/soong/.intermediates/system/hardware/interfaces/media/android.media.audio.common.types-V4-ndk-source/gen/include/staging -o out/soong/.intermediates/system/hardware/interfaces/media/android.media.audio.common.types-V4-ndk-source/gen/staging -Nsystem/hardware/interfaces/media/aidl system/hardware/interfaces/media/aidl/android/media/audio/common/AudioPolicyForceUse.aidl
4  *
5  * DO NOT CHECK THIS FILE INTO A CODE TREE (e.g. git, etc..).
6  * ALWAYS GENERATE THIS FILE FROM UPDATED AIDL COMPILER
7  * AS A BUILD INTERMEDIATE ONLY. THIS IS NOT SOURCE CODE.
8  */
9 #pragma once
10 
11 #include <array>
12 #include <cassert>
13 #include <cstdint>
14 #include <memory>
15 #include <optional>
16 #include <string>
17 #include <type_traits>
18 #include <utility>
19 #include <variant>
20 #include <vector>
21 #include <android/binder_enums.h>
22 #include <android/binder_interface_utils.h>
23 #include <android/binder_parcelable_utils.h>
24 #include <android/binder_to_string.h>
25 #include <aidl/android/media/audio/common/AudioPolicyForceUse.h>
26 #ifdef BINDER_STABILITY_SUPPORT
27 #include <android/binder_stability.h>
28 #endif  // BINDER_STABILITY_SUPPORT
29 
30 #ifndef __BIONIC__
31 #define __assert2(a,b,c,d) ((void)0)
32 #endif
33 
34 namespace aidl {
35 namespace android {
36 namespace media {
37 namespace audio {
38 namespace common {
39 class AudioPolicyForceUse {
40 public:
41   typedef std::false_type fixed_size;
42   static const char* descriptor;
43 
44   enum class CommunicationDeviceCategory : int8_t {
45     NONE = 0,
46     SPEAKER = 1,
47     BT_SCO = 2,
48     BT_BLE = 3,
49     WIRED_ACCESSORY = 4,
50   };
51 
52   enum class MediaDeviceCategory : int8_t {
53     NONE = 0,
54     SPEAKER = 1,
55     HEADPHONES = 2,
56     BT_A2DP = 3,
57     ANALOG_DOCK = 4,
58     DIGITAL_DOCK = 5,
59     WIRED_ACCESSORY = 6,
60     NO_BT_A2DP = 7,
61   };
62 
63   enum class DockType : int8_t {
64     NONE = 0,
65     BT_CAR_DOCK = 1,
66     BT_DESK_DOCK = 2,
67     ANALOG_DOCK = 3,
68     DIGITAL_DOCK = 4,
69     WIRED_ACCESSORY = 5,
70   };
71 
72   enum class EncodedSurroundConfig : int8_t {
73     UNSPECIFIED = 0,
74     NEVER = 1,
75     ALWAYS = 2,
76     MANUAL = 3,
77   };
78 
79   enum class Tag : int32_t {
80     forMedia = 0,
81     forCommunication = 1,
82     forRecord = 2,
83     forVibrateRinging = 3,
84     dock = 4,
85     systemSounds = 5,
86     hdmiSystemAudio = 6,
87     encodedSurround = 7,
88   };
89 
90   // Expose tag symbols for legacy code
91   static const inline Tag forMedia = Tag::forMedia;
92   static const inline Tag forCommunication = Tag::forCommunication;
93   static const inline Tag forRecord = Tag::forRecord;
94   static const inline Tag forVibrateRinging = Tag::forVibrateRinging;
95   static const inline Tag dock = Tag::dock;
96   static const inline Tag systemSounds = Tag::systemSounds;
97   static const inline Tag hdmiSystemAudio = Tag::hdmiSystemAudio;
98   static const inline Tag encodedSurround = Tag::encodedSurround;
99 
100   template<typename _Tp>
101   static constexpr bool _not_self = !std::is_same_v<std::remove_cv_t<std::remove_reference_t<_Tp>>, AudioPolicyForceUse>;
102 
AudioPolicyForceUse()103   AudioPolicyForceUse() : _value(std::in_place_index<static_cast<size_t>(forMedia)>, ::aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory(::aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory::NONE)) { }
104 
105   template <typename _Tp, typename = std::enable_if_t<_not_self<_Tp>>>
106   // NOLINTNEXTLINE(google-explicit-constructor)
AudioPolicyForceUse(_Tp && _arg)107   constexpr AudioPolicyForceUse(_Tp&& _arg)
108       : _value(std::forward<_Tp>(_arg)) {}
109 
110   template <size_t _Np, typename... _Tp>
AudioPolicyForceUse(std::in_place_index_t<_Np>,_Tp &&..._args)111   constexpr explicit AudioPolicyForceUse(std::in_place_index_t<_Np>, _Tp&&... _args)
112       : _value(std::in_place_index<_Np>, std::forward<_Tp>(_args)...) {}
113 
114   template <Tag _tag, typename... _Tp>
make(_Tp &&..._args)115   static AudioPolicyForceUse make(_Tp&&... _args) {
116     return AudioPolicyForceUse(std::in_place_index<static_cast<size_t>(_tag)>, std::forward<_Tp>(_args)...);
117   }
118 
119   template <Tag _tag, typename _Tp, typename... _Up>
make(std::initializer_list<_Tp> _il,_Up &&..._args)120   static AudioPolicyForceUse make(std::initializer_list<_Tp> _il, _Up&&... _args) {
121     return AudioPolicyForceUse(std::in_place_index<static_cast<size_t>(_tag)>, std::move(_il), std::forward<_Up>(_args)...);
122   }
123 
getTag()124   Tag getTag() const {
125     return static_cast<Tag>(_value.index());
126   }
127 
128   template <Tag _tag>
get()129   const auto& get() const {
130     if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
131     return std::get<static_cast<size_t>(_tag)>(_value);
132   }
133 
134   template <Tag _tag>
get()135   auto& get() {
136     if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
137     return std::get<static_cast<size_t>(_tag)>(_value);
138   }
139 
140   template <Tag _tag, typename... _Tp>
set(_Tp &&..._args)141   void set(_Tp&&... _args) {
142     _value.emplace<static_cast<size_t>(_tag)>(std::forward<_Tp>(_args)...);
143   }
144 
145   binder_status_t readFromParcel(const AParcel* _parcel);
146   binder_status_t writeToParcel(AParcel* _parcel) const;
147 
148   inline bool operator==(const AudioPolicyForceUse& _rhs) const {
149     return _value == _rhs._value;
150   }
151   inline bool operator<(const AudioPolicyForceUse& _rhs) const {
152     return _value < _rhs._value;
153   }
154   inline bool operator!=(const AudioPolicyForceUse& _rhs) const {
155     return !(*this == _rhs);
156   }
157   inline bool operator>(const AudioPolicyForceUse& _rhs) const {
158     return _rhs < *this;
159   }
160   inline bool operator>=(const AudioPolicyForceUse& _rhs) const {
161     return !(*this < _rhs);
162   }
163   inline bool operator<=(const AudioPolicyForceUse& _rhs) const {
164     return !(_rhs < *this);
165   }
166 
167   static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_VINTF;
toString()168   inline std::string toString() const {
169     std::ostringstream os;
170     os << "AudioPolicyForceUse{";
171     switch (getTag()) {
172     case forMedia: os << "forMedia: " << ::android::internal::ToString(get<forMedia>()); break;
173     case forCommunication: os << "forCommunication: " << ::android::internal::ToString(get<forCommunication>()); break;
174     case forRecord: os << "forRecord: " << ::android::internal::ToString(get<forRecord>()); break;
175     case forVibrateRinging: os << "forVibrateRinging: " << ::android::internal::ToString(get<forVibrateRinging>()); break;
176     case dock: os << "dock: " << ::android::internal::ToString(get<dock>()); break;
177     case systemSounds: os << "systemSounds: " << ::android::internal::ToString(get<systemSounds>()); break;
178     case hdmiSystemAudio: os << "hdmiSystemAudio: " << ::android::internal::ToString(get<hdmiSystemAudio>()); break;
179     case encodedSurround: os << "encodedSurround: " << ::android::internal::ToString(get<encodedSurround>()); break;
180     }
181     os << "}";
182     return os.str();
183   }
184 private:
185   std::variant<::aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory, ::aidl::android::media::audio::common::AudioPolicyForceUse::CommunicationDeviceCategory, ::aidl::android::media::audio::common::AudioPolicyForceUse::CommunicationDeviceCategory, ::aidl::android::media::audio::common::AudioPolicyForceUse::CommunicationDeviceCategory, ::aidl::android::media::audio::common::AudioPolicyForceUse::DockType, bool, bool, ::aidl::android::media::audio::common::AudioPolicyForceUse::EncodedSurroundConfig> _value;
186 };
187 }  // namespace common
188 }  // namespace audio
189 }  // namespace media
190 }  // namespace android
191 }  // namespace aidl
192 namespace aidl {
193 namespace android {
194 namespace media {
195 namespace audio {
196 namespace common {
toString(AudioPolicyForceUse::CommunicationDeviceCategory val)197 [[nodiscard]] static inline std::string toString(AudioPolicyForceUse::CommunicationDeviceCategory val) {
198   switch(val) {
199   case AudioPolicyForceUse::CommunicationDeviceCategory::NONE:
200     return "NONE";
201   case AudioPolicyForceUse::CommunicationDeviceCategory::SPEAKER:
202     return "SPEAKER";
203   case AudioPolicyForceUse::CommunicationDeviceCategory::BT_SCO:
204     return "BT_SCO";
205   case AudioPolicyForceUse::CommunicationDeviceCategory::BT_BLE:
206     return "BT_BLE";
207   case AudioPolicyForceUse::CommunicationDeviceCategory::WIRED_ACCESSORY:
208     return "WIRED_ACCESSORY";
209   default:
210     return std::to_string(static_cast<int8_t>(val));
211   }
212 }
213 }  // namespace common
214 }  // namespace audio
215 }  // namespace media
216 }  // namespace android
217 }  // namespace aidl
218 namespace ndk {
219 namespace internal {
220 #pragma clang diagnostic push
221 #pragma clang diagnostic ignored "-Wc++17-extensions"
222 template <>
223 constexpr inline std::array<aidl::android::media::audio::common::AudioPolicyForceUse::CommunicationDeviceCategory, 5> enum_values<aidl::android::media::audio::common::AudioPolicyForceUse::CommunicationDeviceCategory> = {
224   aidl::android::media::audio::common::AudioPolicyForceUse::CommunicationDeviceCategory::NONE,
225   aidl::android::media::audio::common::AudioPolicyForceUse::CommunicationDeviceCategory::SPEAKER,
226   aidl::android::media::audio::common::AudioPolicyForceUse::CommunicationDeviceCategory::BT_SCO,
227   aidl::android::media::audio::common::AudioPolicyForceUse::CommunicationDeviceCategory::BT_BLE,
228   aidl::android::media::audio::common::AudioPolicyForceUse::CommunicationDeviceCategory::WIRED_ACCESSORY,
229 };
230 #pragma clang diagnostic pop
231 }  // namespace internal
232 }  // namespace ndk
233 namespace aidl {
234 namespace android {
235 namespace media {
236 namespace audio {
237 namespace common {
toString(AudioPolicyForceUse::MediaDeviceCategory val)238 [[nodiscard]] static inline std::string toString(AudioPolicyForceUse::MediaDeviceCategory val) {
239   switch(val) {
240   case AudioPolicyForceUse::MediaDeviceCategory::NONE:
241     return "NONE";
242   case AudioPolicyForceUse::MediaDeviceCategory::SPEAKER:
243     return "SPEAKER";
244   case AudioPolicyForceUse::MediaDeviceCategory::HEADPHONES:
245     return "HEADPHONES";
246   case AudioPolicyForceUse::MediaDeviceCategory::BT_A2DP:
247     return "BT_A2DP";
248   case AudioPolicyForceUse::MediaDeviceCategory::ANALOG_DOCK:
249     return "ANALOG_DOCK";
250   case AudioPolicyForceUse::MediaDeviceCategory::DIGITAL_DOCK:
251     return "DIGITAL_DOCK";
252   case AudioPolicyForceUse::MediaDeviceCategory::WIRED_ACCESSORY:
253     return "WIRED_ACCESSORY";
254   case AudioPolicyForceUse::MediaDeviceCategory::NO_BT_A2DP:
255     return "NO_BT_A2DP";
256   default:
257     return std::to_string(static_cast<int8_t>(val));
258   }
259 }
260 }  // namespace common
261 }  // namespace audio
262 }  // namespace media
263 }  // namespace android
264 }  // namespace aidl
265 namespace ndk {
266 namespace internal {
267 #pragma clang diagnostic push
268 #pragma clang diagnostic ignored "-Wc++17-extensions"
269 template <>
270 constexpr inline std::array<aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory, 8> enum_values<aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory> = {
271   aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory::NONE,
272   aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory::SPEAKER,
273   aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory::HEADPHONES,
274   aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory::BT_A2DP,
275   aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory::ANALOG_DOCK,
276   aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory::DIGITAL_DOCK,
277   aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory::WIRED_ACCESSORY,
278   aidl::android::media::audio::common::AudioPolicyForceUse::MediaDeviceCategory::NO_BT_A2DP,
279 };
280 #pragma clang diagnostic pop
281 }  // namespace internal
282 }  // namespace ndk
283 namespace aidl {
284 namespace android {
285 namespace media {
286 namespace audio {
287 namespace common {
toString(AudioPolicyForceUse::DockType val)288 [[nodiscard]] static inline std::string toString(AudioPolicyForceUse::DockType val) {
289   switch(val) {
290   case AudioPolicyForceUse::DockType::NONE:
291     return "NONE";
292   case AudioPolicyForceUse::DockType::BT_CAR_DOCK:
293     return "BT_CAR_DOCK";
294   case AudioPolicyForceUse::DockType::BT_DESK_DOCK:
295     return "BT_DESK_DOCK";
296   case AudioPolicyForceUse::DockType::ANALOG_DOCK:
297     return "ANALOG_DOCK";
298   case AudioPolicyForceUse::DockType::DIGITAL_DOCK:
299     return "DIGITAL_DOCK";
300   case AudioPolicyForceUse::DockType::WIRED_ACCESSORY:
301     return "WIRED_ACCESSORY";
302   default:
303     return std::to_string(static_cast<int8_t>(val));
304   }
305 }
306 }  // namespace common
307 }  // namespace audio
308 }  // namespace media
309 }  // namespace android
310 }  // namespace aidl
311 namespace ndk {
312 namespace internal {
313 #pragma clang diagnostic push
314 #pragma clang diagnostic ignored "-Wc++17-extensions"
315 template <>
316 constexpr inline std::array<aidl::android::media::audio::common::AudioPolicyForceUse::DockType, 6> enum_values<aidl::android::media::audio::common::AudioPolicyForceUse::DockType> = {
317   aidl::android::media::audio::common::AudioPolicyForceUse::DockType::NONE,
318   aidl::android::media::audio::common::AudioPolicyForceUse::DockType::BT_CAR_DOCK,
319   aidl::android::media::audio::common::AudioPolicyForceUse::DockType::BT_DESK_DOCK,
320   aidl::android::media::audio::common::AudioPolicyForceUse::DockType::ANALOG_DOCK,
321   aidl::android::media::audio::common::AudioPolicyForceUse::DockType::DIGITAL_DOCK,
322   aidl::android::media::audio::common::AudioPolicyForceUse::DockType::WIRED_ACCESSORY,
323 };
324 #pragma clang diagnostic pop
325 }  // namespace internal
326 }  // namespace ndk
327 namespace aidl {
328 namespace android {
329 namespace media {
330 namespace audio {
331 namespace common {
toString(AudioPolicyForceUse::EncodedSurroundConfig val)332 [[nodiscard]] static inline std::string toString(AudioPolicyForceUse::EncodedSurroundConfig val) {
333   switch(val) {
334   case AudioPolicyForceUse::EncodedSurroundConfig::UNSPECIFIED:
335     return "UNSPECIFIED";
336   case AudioPolicyForceUse::EncodedSurroundConfig::NEVER:
337     return "NEVER";
338   case AudioPolicyForceUse::EncodedSurroundConfig::ALWAYS:
339     return "ALWAYS";
340   case AudioPolicyForceUse::EncodedSurroundConfig::MANUAL:
341     return "MANUAL";
342   default:
343     return std::to_string(static_cast<int8_t>(val));
344   }
345 }
346 }  // namespace common
347 }  // namespace audio
348 }  // namespace media
349 }  // namespace android
350 }  // namespace aidl
351 namespace ndk {
352 namespace internal {
353 #pragma clang diagnostic push
354 #pragma clang diagnostic ignored "-Wc++17-extensions"
355 template <>
356 constexpr inline std::array<aidl::android::media::audio::common::AudioPolicyForceUse::EncodedSurroundConfig, 4> enum_values<aidl::android::media::audio::common::AudioPolicyForceUse::EncodedSurroundConfig> = {
357   aidl::android::media::audio::common::AudioPolicyForceUse::EncodedSurroundConfig::UNSPECIFIED,
358   aidl::android::media::audio::common::AudioPolicyForceUse::EncodedSurroundConfig::NEVER,
359   aidl::android::media::audio::common::AudioPolicyForceUse::EncodedSurroundConfig::ALWAYS,
360   aidl::android::media::audio::common::AudioPolicyForceUse::EncodedSurroundConfig::MANUAL,
361 };
362 #pragma clang diagnostic pop
363 }  // namespace internal
364 }  // namespace ndk
365 namespace aidl {
366 namespace android {
367 namespace media {
368 namespace audio {
369 namespace common {
toString(AudioPolicyForceUse::Tag val)370 [[nodiscard]] static inline std::string toString(AudioPolicyForceUse::Tag val) {
371   switch(val) {
372   case AudioPolicyForceUse::Tag::forMedia:
373     return "forMedia";
374   case AudioPolicyForceUse::Tag::forCommunication:
375     return "forCommunication";
376   case AudioPolicyForceUse::Tag::forRecord:
377     return "forRecord";
378   case AudioPolicyForceUse::Tag::forVibrateRinging:
379     return "forVibrateRinging";
380   case AudioPolicyForceUse::Tag::dock:
381     return "dock";
382   case AudioPolicyForceUse::Tag::systemSounds:
383     return "systemSounds";
384   case AudioPolicyForceUse::Tag::hdmiSystemAudio:
385     return "hdmiSystemAudio";
386   case AudioPolicyForceUse::Tag::encodedSurround:
387     return "encodedSurround";
388   default:
389     return std::to_string(static_cast<int32_t>(val));
390   }
391 }
392 }  // namespace common
393 }  // namespace audio
394 }  // namespace media
395 }  // namespace android
396 }  // namespace aidl
397 namespace ndk {
398 namespace internal {
399 #pragma clang diagnostic push
400 #pragma clang diagnostic ignored "-Wc++17-extensions"
401 template <>
402 constexpr inline std::array<aidl::android::media::audio::common::AudioPolicyForceUse::Tag, 8> enum_values<aidl::android::media::audio::common::AudioPolicyForceUse::Tag> = {
403   aidl::android::media::audio::common::AudioPolicyForceUse::Tag::forMedia,
404   aidl::android::media::audio::common::AudioPolicyForceUse::Tag::forCommunication,
405   aidl::android::media::audio::common::AudioPolicyForceUse::Tag::forRecord,
406   aidl::android::media::audio::common::AudioPolicyForceUse::Tag::forVibrateRinging,
407   aidl::android::media::audio::common::AudioPolicyForceUse::Tag::dock,
408   aidl::android::media::audio::common::AudioPolicyForceUse::Tag::systemSounds,
409   aidl::android::media::audio::common::AudioPolicyForceUse::Tag::hdmiSystemAudio,
410   aidl::android::media::audio::common::AudioPolicyForceUse::Tag::encodedSurround,
411 };
412 #pragma clang diagnostic pop
413 }  // namespace internal
414 }  // namespace ndk
415