1 /*
2  * This file is auto-generated.  DO NOT MODIFY.
3  * Using: out/host/linux-x86/bin/aidl --lang=cpp -Weverything -Wno-missing-permission-annotation -t --min_sdk_version 29 -pout/soong/.intermediates/system/hardware/interfaces/media/android.media.audio.common.types_interface/4/preprocessed.aidl -pout/soong/.intermediates/frameworks/native/libs/permission/framework-permission-aidl_interface/preprocessed.aidl --ninja -d out/soong/.intermediates/frameworks/av/media/libaudioclient/audioclient-types-aidl-cpp-source/gen/staging/android/media/AudioPortExtSys.cpp.d -h out/soong/.intermediates/frameworks/av/media/libaudioclient/audioclient-types-aidl-cpp-source/gen/include/staging -o out/soong/.intermediates/frameworks/av/media/libaudioclient/audioclient-types-aidl-cpp-source/gen/staging -Nframeworks/av/media/libaudioclient/aidl frameworks/av/media/libaudioclient/aidl/android/media/AudioPortExtSys.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 <android/binder_to_string.h>
12 #include <android/media/AudioPortDeviceExtSys.h>
13 #include <android/media/AudioPortMixExtSys.h>
14 #include <array>
15 #include <binder/Enums.h>
16 #include <binder/Parcel.h>
17 #include <binder/Status.h>
18 #include <cassert>
19 #include <cstdint>
20 #include <string>
21 #include <type_traits>
22 #include <utility>
23 #include <utils/String16.h>
24 #include <variant>
25 
26 #ifndef __BIONIC__
27 #define __assert2(a,b,c,d) ((void)0)
28 #endif
29 
30 namespace android::media {
31 class AudioPortDeviceExtSys;
32 class AudioPortMixExtSys;
33 }  // namespace android::media
34 namespace android {
35 namespace media {
36 class LIBBINDER_EXPORTED AudioPortExtSys : public ::android::Parcelable {
37 public:
38   enum class Tag : int32_t {
39     unspecified = 0,
40     device = 1,
41     mix = 2,
42     session = 3,
43   };
44   // Expose tag symbols for legacy code
45   static const inline Tag unspecified = Tag::unspecified;
46   static const inline Tag device = Tag::device;
47   static const inline Tag mix = Tag::mix;
48   static const inline Tag session = Tag::session;
49 
50   template<typename _Tp>
51   static constexpr bool _not_self = !std::is_same_v<std::remove_cv_t<std::remove_reference_t<_Tp>>, AudioPortExtSys>;
52 
AudioPortExtSys()53   AudioPortExtSys() : _value(std::in_place_index<static_cast<size_t>(unspecified)>, bool(false)) { }
54 
55   template <typename _Tp, typename = std::enable_if_t<_not_self<_Tp>>>
56   // NOLINTNEXTLINE(google-explicit-constructor)
AudioPortExtSys(_Tp && _arg)57   constexpr AudioPortExtSys(_Tp&& _arg)
58       : _value(std::forward<_Tp>(_arg)) {}
59 
60   template <size_t _Np, typename... _Tp>
AudioPortExtSys(std::in_place_index_t<_Np>,_Tp &&..._args)61   constexpr explicit AudioPortExtSys(std::in_place_index_t<_Np>, _Tp&&... _args)
62       : _value(std::in_place_index<_Np>, std::forward<_Tp>(_args)...) {}
63 
64   template <Tag _tag, typename... _Tp>
make(_Tp &&..._args)65   static AudioPortExtSys make(_Tp&&... _args) {
66     return AudioPortExtSys(std::in_place_index<static_cast<size_t>(_tag)>, std::forward<_Tp>(_args)...);
67   }
68 
69   template <Tag _tag, typename _Tp, typename... _Up>
make(std::initializer_list<_Tp> _il,_Up &&..._args)70   static AudioPortExtSys make(std::initializer_list<_Tp> _il, _Up&&... _args) {
71     return AudioPortExtSys(std::in_place_index<static_cast<size_t>(_tag)>, std::move(_il), std::forward<_Up>(_args)...);
72   }
73 
getTag()74   Tag getTag() const {
75     return static_cast<Tag>(_value.index());
76   }
77 
78   template <Tag _tag>
get()79   const auto& get() const {
80     if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
81     return std::get<static_cast<size_t>(_tag)>(_value);
82   }
83 
84   template <Tag _tag>
get()85   auto& get() {
86     if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
87     return std::get<static_cast<size_t>(_tag)>(_value);
88   }
89 
90   template <Tag _tag, typename... _Tp>
set(_Tp &&..._args)91   void set(_Tp&&... _args) {
92     _value.emplace<static_cast<size_t>(_tag)>(std::forward<_Tp>(_args)...);
93   }
94 
95   inline bool operator==(const AudioPortExtSys& _rhs) const {
96     return _value == _rhs._value;
97   }
98   inline bool operator<(const AudioPortExtSys& _rhs) const {
99     return _value < _rhs._value;
100   }
101   inline bool operator!=(const AudioPortExtSys& _rhs) const {
102     return !(*this == _rhs);
103   }
104   inline bool operator>(const AudioPortExtSys& _rhs) const {
105     return _rhs < *this;
106   }
107   inline bool operator>=(const AudioPortExtSys& _rhs) const {
108     return !(*this < _rhs);
109   }
110   inline bool operator<=(const AudioPortExtSys& _rhs) const {
111     return !(_rhs < *this);
112   }
113 
114   ::android::status_t readFromParcel(const ::android::Parcel* _aidl_parcel) final;
115   ::android::status_t writeToParcel(::android::Parcel* _aidl_parcel) const final;
getParcelableDescriptor()116   static const ::android::String16& getParcelableDescriptor() {
117     static const ::android::StaticString16 DESCRIPTOR (u"android.media.AudioPortExtSys");
118     return DESCRIPTOR;
119   }
toString()120   inline std::string toString() const {
121     std::ostringstream os;
122     os << "AudioPortExtSys{";
123     switch (getTag()) {
124     case unspecified: os << "unspecified: " << ::android::internal::ToString(get<unspecified>()); break;
125     case device: os << "device: " << ::android::internal::ToString(get<device>()); break;
126     case mix: os << "mix: " << ::android::internal::ToString(get<mix>()); break;
127     case session: os << "session: " << ::android::internal::ToString(get<session>()); break;
128     }
129     os << "}";
130     return os.str();
131   }
132 private:
133   std::variant<bool, ::android::media::AudioPortDeviceExtSys, ::android::media::AudioPortMixExtSys, int32_t> _value;
134 };  // class AudioPortExtSys
135 }  // namespace media
136 }  // namespace android
137 namespace android {
138 namespace media {
toString(AudioPortExtSys::Tag val)139 [[nodiscard]] static inline std::string toString(AudioPortExtSys::Tag val) {
140   switch(val) {
141   case AudioPortExtSys::Tag::unspecified:
142     return "unspecified";
143   case AudioPortExtSys::Tag::device:
144     return "device";
145   case AudioPortExtSys::Tag::mix:
146     return "mix";
147   case AudioPortExtSys::Tag::session:
148     return "session";
149   default:
150     return std::to_string(static_cast<int32_t>(val));
151   }
152 }
153 }  // namespace media
154 }  // namespace android
155 namespace android {
156 namespace internal {
157 #pragma clang diagnostic push
158 #pragma clang diagnostic ignored "-Wc++17-extensions"
159 template <>
160 constexpr inline std::array<::android::media::AudioPortExtSys::Tag, 4> enum_values<::android::media::AudioPortExtSys::Tag> = {
161   ::android::media::AudioPortExtSys::Tag::unspecified,
162   ::android::media::AudioPortExtSys::Tag::device,
163   ::android::media::AudioPortExtSys::Tag::mix,
164   ::android::media::AudioPortExtSys::Tag::session,
165 };
166 #pragma clang diagnostic pop
167 }  // namespace internal
168 }  // namespace android
169