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