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/HeadTracking.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/HeadTracking.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 #ifdef BINDER_STABILITY_SUPPORT
26 #include <android/binder_stability.h>
27 #endif  // BINDER_STABILITY_SUPPORT
28 
29 #ifndef __BIONIC__
30 #define __assert2(a,b,c,d) ((void)0)
31 #endif
32 
33 namespace aidl {
34 namespace android {
35 namespace media {
36 namespace audio {
37 namespace common {
38 class HeadTracking {
39 public:
40   typedef std::false_type fixed_size;
41   static const char* descriptor;
42 
43   enum class Mode : int8_t {
44     OTHER = 0,
45     DISABLED = 1,
46     RELATIVE_WORLD = 2,
47     RELATIVE_SCREEN = 3,
48   };
49 
50   enum class ConnectionMode : int8_t {
51     FRAMEWORK_PROCESSED = 0,
52     DIRECT_TO_SENSOR_SW = 1,
53     DIRECT_TO_SENSOR_TUNNEL = 2,
54   };
55 
56   class SensorData {
57   public:
58     typedef std::false_type fixed_size;
59     static const char* descriptor;
60 
61     enum class Tag : int32_t {
62       headToStage = 0,
63     };
64 
65     // Expose tag symbols for legacy code
66     static const inline Tag headToStage = Tag::headToStage;
67 
68     template<typename _Tp>
69     static constexpr bool _not_self = !std::is_same_v<std::remove_cv_t<std::remove_reference_t<_Tp>>, SensorData>;
70 
SensorData()71     SensorData() : _value(std::in_place_index<static_cast<size_t>(headToStage)>, std::array<float, 6>({{0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f}})) { }
72 
73     template <typename _Tp, typename = std::enable_if_t<_not_self<_Tp>>>
74     // NOLINTNEXTLINE(google-explicit-constructor)
SensorData(_Tp && _arg)75     constexpr SensorData(_Tp&& _arg)
76         : _value(std::forward<_Tp>(_arg)) {}
77 
78     template <size_t _Np, typename... _Tp>
SensorData(std::in_place_index_t<_Np>,_Tp &&..._args)79     constexpr explicit SensorData(std::in_place_index_t<_Np>, _Tp&&... _args)
80         : _value(std::in_place_index<_Np>, std::forward<_Tp>(_args)...) {}
81 
82     template <Tag _tag, typename... _Tp>
make(_Tp &&..._args)83     static SensorData make(_Tp&&... _args) {
84       return SensorData(std::in_place_index<static_cast<size_t>(_tag)>, std::forward<_Tp>(_args)...);
85     }
86 
87     template <Tag _tag, typename _Tp, typename... _Up>
make(std::initializer_list<_Tp> _il,_Up &&..._args)88     static SensorData make(std::initializer_list<_Tp> _il, _Up&&... _args) {
89       return SensorData(std::in_place_index<static_cast<size_t>(_tag)>, std::move(_il), std::forward<_Up>(_args)...);
90     }
91 
getTag()92     Tag getTag() const {
93       return static_cast<Tag>(_value.index());
94     }
95 
96     template <Tag _tag>
get()97     const auto& get() const {
98       if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
99       return std::get<static_cast<size_t>(_tag)>(_value);
100     }
101 
102     template <Tag _tag>
get()103     auto& get() {
104       if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
105       return std::get<static_cast<size_t>(_tag)>(_value);
106     }
107 
108     template <Tag _tag, typename... _Tp>
set(_Tp &&..._args)109     void set(_Tp&&... _args) {
110       _value.emplace<static_cast<size_t>(_tag)>(std::forward<_Tp>(_args)...);
111     }
112 
113     binder_status_t readFromParcel(const AParcel* _parcel);
114     binder_status_t writeToParcel(AParcel* _parcel) const;
115 
116     inline bool operator==(const SensorData& _rhs) const {
117       return _value == _rhs._value;
118     }
119     inline bool operator<(const SensorData& _rhs) const {
120       return _value < _rhs._value;
121     }
122     inline bool operator!=(const SensorData& _rhs) const {
123       return !(*this == _rhs);
124     }
125     inline bool operator>(const SensorData& _rhs) const {
126       return _rhs < *this;
127     }
128     inline bool operator>=(const SensorData& _rhs) const {
129       return !(*this < _rhs);
130     }
131     inline bool operator<=(const SensorData& _rhs) const {
132       return !(_rhs < *this);
133     }
134 
135     static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_VINTF;
toString()136     inline std::string toString() const {
137       std::ostringstream os;
138       os << "SensorData{";
139       switch (getTag()) {
140       case headToStage: os << "headToStage: " << ::android::internal::ToString(get<headToStage>()); break;
141       }
142       os << "}";
143       return os.str();
144     }
145   private:
146     std::variant<std::array<float, 6>> _value;
147   };
148 
149   binder_status_t readFromParcel(const AParcel* parcel);
150   binder_status_t writeToParcel(AParcel* parcel) const;
151 
152   inline bool operator==(const HeadTracking&) const {
153     return std::tie() == std::tie();
154   }
155   inline bool operator<(const HeadTracking&) const {
156     return std::tie() < std::tie();
157   }
158   inline bool operator!=(const HeadTracking& _rhs) const {
159     return !(*this == _rhs);
160   }
161   inline bool operator>(const HeadTracking& _rhs) const {
162     return _rhs < *this;
163   }
164   inline bool operator>=(const HeadTracking& _rhs) const {
165     return !(*this < _rhs);
166   }
167   inline bool operator<=(const HeadTracking& _rhs) const {
168     return !(_rhs < *this);
169   }
170 
171   static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_VINTF;
toString()172   inline std::string toString() const {
173     std::ostringstream _aidl_os;
174     _aidl_os << "HeadTracking{";
175     _aidl_os << "}";
176     return _aidl_os.str();
177   }
178 };
179 }  // namespace common
180 }  // namespace audio
181 }  // namespace media
182 }  // namespace android
183 }  // namespace aidl
184 namespace aidl {
185 namespace android {
186 namespace media {
187 namespace audio {
188 namespace common {
toString(HeadTracking::Mode val)189 [[nodiscard]] static inline std::string toString(HeadTracking::Mode val) {
190   switch(val) {
191   case HeadTracking::Mode::OTHER:
192     return "OTHER";
193   case HeadTracking::Mode::DISABLED:
194     return "DISABLED";
195   case HeadTracking::Mode::RELATIVE_WORLD:
196     return "RELATIVE_WORLD";
197   case HeadTracking::Mode::RELATIVE_SCREEN:
198     return "RELATIVE_SCREEN";
199   default:
200     return std::to_string(static_cast<int8_t>(val));
201   }
202 }
203 }  // namespace common
204 }  // namespace audio
205 }  // namespace media
206 }  // namespace android
207 }  // namespace aidl
208 namespace ndk {
209 namespace internal {
210 #pragma clang diagnostic push
211 #pragma clang diagnostic ignored "-Wc++17-extensions"
212 template <>
213 constexpr inline std::array<aidl::android::media::audio::common::HeadTracking::Mode, 4> enum_values<aidl::android::media::audio::common::HeadTracking::Mode> = {
214   aidl::android::media::audio::common::HeadTracking::Mode::OTHER,
215   aidl::android::media::audio::common::HeadTracking::Mode::DISABLED,
216   aidl::android::media::audio::common::HeadTracking::Mode::RELATIVE_WORLD,
217   aidl::android::media::audio::common::HeadTracking::Mode::RELATIVE_SCREEN,
218 };
219 #pragma clang diagnostic pop
220 }  // namespace internal
221 }  // namespace ndk
222 namespace aidl {
223 namespace android {
224 namespace media {
225 namespace audio {
226 namespace common {
toString(HeadTracking::ConnectionMode val)227 [[nodiscard]] static inline std::string toString(HeadTracking::ConnectionMode val) {
228   switch(val) {
229   case HeadTracking::ConnectionMode::FRAMEWORK_PROCESSED:
230     return "FRAMEWORK_PROCESSED";
231   case HeadTracking::ConnectionMode::DIRECT_TO_SENSOR_SW:
232     return "DIRECT_TO_SENSOR_SW";
233   case HeadTracking::ConnectionMode::DIRECT_TO_SENSOR_TUNNEL:
234     return "DIRECT_TO_SENSOR_TUNNEL";
235   default:
236     return std::to_string(static_cast<int8_t>(val));
237   }
238 }
239 }  // namespace common
240 }  // namespace audio
241 }  // namespace media
242 }  // namespace android
243 }  // namespace aidl
244 namespace ndk {
245 namespace internal {
246 #pragma clang diagnostic push
247 #pragma clang diagnostic ignored "-Wc++17-extensions"
248 template <>
249 constexpr inline std::array<aidl::android::media::audio::common::HeadTracking::ConnectionMode, 3> enum_values<aidl::android::media::audio::common::HeadTracking::ConnectionMode> = {
250   aidl::android::media::audio::common::HeadTracking::ConnectionMode::FRAMEWORK_PROCESSED,
251   aidl::android::media::audio::common::HeadTracking::ConnectionMode::DIRECT_TO_SENSOR_SW,
252   aidl::android::media::audio::common::HeadTracking::ConnectionMode::DIRECT_TO_SENSOR_TUNNEL,
253 };
254 #pragma clang diagnostic pop
255 }  // namespace internal
256 }  // namespace ndk
257 namespace aidl {
258 namespace android {
259 namespace media {
260 namespace audio {
261 namespace common {
toString(HeadTracking::SensorData::Tag val)262 [[nodiscard]] static inline std::string toString(HeadTracking::SensorData::Tag val) {
263   switch(val) {
264   case HeadTracking::SensorData::Tag::headToStage:
265     return "headToStage";
266   default:
267     return std::to_string(static_cast<int32_t>(val));
268   }
269 }
270 }  // namespace common
271 }  // namespace audio
272 }  // namespace media
273 }  // namespace android
274 }  // namespace aidl
275 namespace ndk {
276 namespace internal {
277 #pragma clang diagnostic push
278 #pragma clang diagnostic ignored "-Wc++17-extensions"
279 template <>
280 constexpr inline std::array<aidl::android::media::audio::common::HeadTracking::SensorData::Tag, 1> enum_values<aidl::android::media::audio::common::HeadTracking::SensorData::Tag> = {
281   aidl::android::media::audio::common::HeadTracking::SensorData::Tag::headToStage,
282 };
283 #pragma clang diagnostic pop
284 }  // namespace internal
285 }  // namespace ndk
286