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