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 -t --min_sdk_version 31 --ninja -d out/soong/.intermediates/art/artd/binder/artd-aidl-ndk-source/gen/staging/com/android/server/art/ProfilePath.cpp.d -h out/soong/.intermediates/art/artd/binder/artd-aidl-ndk-source/gen/include/staging -o out/soong/.intermediates/art/artd/binder/artd-aidl-ndk-source/gen/staging -Nart/artd/binder art/artd/binder/com/android/server/art/ProfilePath.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/com/android/server/art/DexMetadataPath.h>
26 #include <aidl/com/android/server/art/ProfilePath.h>
27 #ifdef BINDER_STABILITY_SUPPORT
28 #include <android/binder_stability.h>
29 #endif  // BINDER_STABILITY_SUPPORT
30 
31 #ifndef __BIONIC__
32 #define __assert2(a,b,c,d) ((void)0)
33 #endif
34 
35 namespace aidl::com::android::server::art {
36 class DexMetadataPath;
37 }  // namespace aidl::com::android::server::art
38 namespace aidl {
39 namespace com {
40 namespace android {
41 namespace server {
42 namespace art {
43 class ProfilePath {
44 public:
45   typedef std::false_type fixed_size;
46   static const char* descriptor;
47 
48   class PrimaryRefProfilePath {
49   public:
50     typedef std::false_type fixed_size;
51     static const char* descriptor;
52 
53     std::string packageName;
54     std::string profileName;
55     bool isPreReboot = false;
56 
57     binder_status_t readFromParcel(const AParcel* parcel);
58     binder_status_t writeToParcel(AParcel* parcel) const;
59 
60     inline bool operator==(const PrimaryRefProfilePath& _rhs) const {
61       return std::tie(packageName, profileName, isPreReboot) == std::tie(_rhs.packageName, _rhs.profileName, _rhs.isPreReboot);
62     }
63     inline bool operator<(const PrimaryRefProfilePath& _rhs) const {
64       return std::tie(packageName, profileName, isPreReboot) < std::tie(_rhs.packageName, _rhs.profileName, _rhs.isPreReboot);
65     }
66     inline bool operator!=(const PrimaryRefProfilePath& _rhs) const {
67       return !(*this == _rhs);
68     }
69     inline bool operator>(const PrimaryRefProfilePath& _rhs) const {
70       return _rhs < *this;
71     }
72     inline bool operator>=(const PrimaryRefProfilePath& _rhs) const {
73       return !(*this < _rhs);
74     }
75     inline bool operator<=(const PrimaryRefProfilePath& _rhs) const {
76       return !(_rhs < *this);
77     }
78 
79     static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_LOCAL;
toString()80     inline std::string toString() const {
81       std::ostringstream _aidl_os;
82       _aidl_os << "PrimaryRefProfilePath{";
83       _aidl_os << "packageName: " << ::android::internal::ToString(packageName);
84       _aidl_os << ", profileName: " << ::android::internal::ToString(profileName);
85       _aidl_os << ", isPreReboot: " << ::android::internal::ToString(isPreReboot);
86       _aidl_os << "}";
87       return _aidl_os.str();
88     }
89   };
90   class PrebuiltProfilePath {
91   public:
92     typedef std::false_type fixed_size;
93     static const char* descriptor;
94 
95     std::string dexPath;
96 
97     binder_status_t readFromParcel(const AParcel* parcel);
98     binder_status_t writeToParcel(AParcel* parcel) const;
99 
100     inline bool operator==(const PrebuiltProfilePath& _rhs) const {
101       return std::tie(dexPath) == std::tie(_rhs.dexPath);
102     }
103     inline bool operator<(const PrebuiltProfilePath& _rhs) const {
104       return std::tie(dexPath) < std::tie(_rhs.dexPath);
105     }
106     inline bool operator!=(const PrebuiltProfilePath& _rhs) const {
107       return !(*this == _rhs);
108     }
109     inline bool operator>(const PrebuiltProfilePath& _rhs) const {
110       return _rhs < *this;
111     }
112     inline bool operator>=(const PrebuiltProfilePath& _rhs) const {
113       return !(*this < _rhs);
114     }
115     inline bool operator<=(const PrebuiltProfilePath& _rhs) const {
116       return !(_rhs < *this);
117     }
118 
119     static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_LOCAL;
toString()120     inline std::string toString() const {
121       std::ostringstream _aidl_os;
122       _aidl_os << "PrebuiltProfilePath{";
123       _aidl_os << "dexPath: " << ::android::internal::ToString(dexPath);
124       _aidl_os << "}";
125       return _aidl_os.str();
126     }
127   };
128   class PrimaryCurProfilePath {
129   public:
130     typedef std::false_type fixed_size;
131     static const char* descriptor;
132 
133     int32_t userId = 0;
134     std::string packageName;
135     std::string profileName;
136 
137     binder_status_t readFromParcel(const AParcel* parcel);
138     binder_status_t writeToParcel(AParcel* parcel) const;
139 
140     inline bool operator==(const PrimaryCurProfilePath& _rhs) const {
141       return std::tie(userId, packageName, profileName) == std::tie(_rhs.userId, _rhs.packageName, _rhs.profileName);
142     }
143     inline bool operator<(const PrimaryCurProfilePath& _rhs) const {
144       return std::tie(userId, packageName, profileName) < std::tie(_rhs.userId, _rhs.packageName, _rhs.profileName);
145     }
146     inline bool operator!=(const PrimaryCurProfilePath& _rhs) const {
147       return !(*this == _rhs);
148     }
149     inline bool operator>(const PrimaryCurProfilePath& _rhs) const {
150       return _rhs < *this;
151     }
152     inline bool operator>=(const PrimaryCurProfilePath& _rhs) const {
153       return !(*this < _rhs);
154     }
155     inline bool operator<=(const PrimaryCurProfilePath& _rhs) const {
156       return !(_rhs < *this);
157     }
158 
159     static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_LOCAL;
toString()160     inline std::string toString() const {
161       std::ostringstream _aidl_os;
162       _aidl_os << "PrimaryCurProfilePath{";
163       _aidl_os << "userId: " << ::android::internal::ToString(userId);
164       _aidl_os << ", packageName: " << ::android::internal::ToString(packageName);
165       _aidl_os << ", profileName: " << ::android::internal::ToString(profileName);
166       _aidl_os << "}";
167       return _aidl_os.str();
168     }
169   };
170   class SecondaryRefProfilePath {
171   public:
172     typedef std::false_type fixed_size;
173     static const char* descriptor;
174 
175     std::string dexPath;
176     bool isPreReboot = false;
177 
178     binder_status_t readFromParcel(const AParcel* parcel);
179     binder_status_t writeToParcel(AParcel* parcel) const;
180 
181     inline bool operator==(const SecondaryRefProfilePath& _rhs) const {
182       return std::tie(dexPath, isPreReboot) == std::tie(_rhs.dexPath, _rhs.isPreReboot);
183     }
184     inline bool operator<(const SecondaryRefProfilePath& _rhs) const {
185       return std::tie(dexPath, isPreReboot) < std::tie(_rhs.dexPath, _rhs.isPreReboot);
186     }
187     inline bool operator!=(const SecondaryRefProfilePath& _rhs) const {
188       return !(*this == _rhs);
189     }
190     inline bool operator>(const SecondaryRefProfilePath& _rhs) const {
191       return _rhs < *this;
192     }
193     inline bool operator>=(const SecondaryRefProfilePath& _rhs) const {
194       return !(*this < _rhs);
195     }
196     inline bool operator<=(const SecondaryRefProfilePath& _rhs) const {
197       return !(_rhs < *this);
198     }
199 
200     static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_LOCAL;
toString()201     inline std::string toString() const {
202       std::ostringstream _aidl_os;
203       _aidl_os << "SecondaryRefProfilePath{";
204       _aidl_os << "dexPath: " << ::android::internal::ToString(dexPath);
205       _aidl_os << ", isPreReboot: " << ::android::internal::ToString(isPreReboot);
206       _aidl_os << "}";
207       return _aidl_os.str();
208     }
209   };
210   class SecondaryCurProfilePath {
211   public:
212     typedef std::false_type fixed_size;
213     static const char* descriptor;
214 
215     std::string dexPath;
216 
217     binder_status_t readFromParcel(const AParcel* parcel);
218     binder_status_t writeToParcel(AParcel* parcel) const;
219 
220     inline bool operator==(const SecondaryCurProfilePath& _rhs) const {
221       return std::tie(dexPath) == std::tie(_rhs.dexPath);
222     }
223     inline bool operator<(const SecondaryCurProfilePath& _rhs) const {
224       return std::tie(dexPath) < std::tie(_rhs.dexPath);
225     }
226     inline bool operator!=(const SecondaryCurProfilePath& _rhs) const {
227       return !(*this == _rhs);
228     }
229     inline bool operator>(const SecondaryCurProfilePath& _rhs) const {
230       return _rhs < *this;
231     }
232     inline bool operator>=(const SecondaryCurProfilePath& _rhs) const {
233       return !(*this < _rhs);
234     }
235     inline bool operator<=(const SecondaryCurProfilePath& _rhs) const {
236       return !(_rhs < *this);
237     }
238 
239     static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_LOCAL;
toString()240     inline std::string toString() const {
241       std::ostringstream _aidl_os;
242       _aidl_os << "SecondaryCurProfilePath{";
243       _aidl_os << "dexPath: " << ::android::internal::ToString(dexPath);
244       _aidl_os << "}";
245       return _aidl_os.str();
246     }
247   };
248   class WritableProfilePath {
249   public:
250     typedef std::false_type fixed_size;
251     static const char* descriptor;
252 
253     enum class Tag : int32_t {
254       forPrimary = 0,
255       forSecondary = 1,
256     };
257 
258     // Expose tag symbols for legacy code
259     static const inline Tag forPrimary = Tag::forPrimary;
260     static const inline Tag forSecondary = Tag::forSecondary;
261 
262     template<typename _Tp>
263     static constexpr bool _not_self = !std::is_same_v<std::remove_cv_t<std::remove_reference_t<_Tp>>, WritableProfilePath>;
264 
WritableProfilePath()265     WritableProfilePath() : _value(std::in_place_index<static_cast<size_t>(forPrimary)>, ::aidl::com::android::server::art::ProfilePath::PrimaryRefProfilePath()) { }
266 
267     template <typename _Tp, typename = std::enable_if_t<_not_self<_Tp>>>
268     // NOLINTNEXTLINE(google-explicit-constructor)
WritableProfilePath(_Tp && _arg)269     constexpr WritableProfilePath(_Tp&& _arg)
270         : _value(std::forward<_Tp>(_arg)) {}
271 
272     template <size_t _Np, typename... _Tp>
WritableProfilePath(std::in_place_index_t<_Np>,_Tp &&..._args)273     constexpr explicit WritableProfilePath(std::in_place_index_t<_Np>, _Tp&&... _args)
274         : _value(std::in_place_index<_Np>, std::forward<_Tp>(_args)...) {}
275 
276     template <Tag _tag, typename... _Tp>
make(_Tp &&..._args)277     static WritableProfilePath make(_Tp&&... _args) {
278       return WritableProfilePath(std::in_place_index<static_cast<size_t>(_tag)>, std::forward<_Tp>(_args)...);
279     }
280 
281     template <Tag _tag, typename _Tp, typename... _Up>
make(std::initializer_list<_Tp> _il,_Up &&..._args)282     static WritableProfilePath make(std::initializer_list<_Tp> _il, _Up&&... _args) {
283       return WritableProfilePath(std::in_place_index<static_cast<size_t>(_tag)>, std::move(_il), std::forward<_Up>(_args)...);
284     }
285 
getTag()286     Tag getTag() const {
287       return static_cast<Tag>(_value.index());
288     }
289 
290     template <Tag _tag>
get()291     const auto& get() const {
292       if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
293       return std::get<static_cast<size_t>(_tag)>(_value);
294     }
295 
296     template <Tag _tag>
get()297     auto& get() {
298       if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
299       return std::get<static_cast<size_t>(_tag)>(_value);
300     }
301 
302     template <Tag _tag, typename... _Tp>
set(_Tp &&..._args)303     void set(_Tp&&... _args) {
304       _value.emplace<static_cast<size_t>(_tag)>(std::forward<_Tp>(_args)...);
305     }
306 
307     binder_status_t readFromParcel(const AParcel* _parcel);
308     binder_status_t writeToParcel(AParcel* _parcel) const;
309 
310     inline bool operator==(const WritableProfilePath& _rhs) const {
311       return _value == _rhs._value;
312     }
313     inline bool operator<(const WritableProfilePath& _rhs) const {
314       return _value < _rhs._value;
315     }
316     inline bool operator!=(const WritableProfilePath& _rhs) const {
317       return !(*this == _rhs);
318     }
319     inline bool operator>(const WritableProfilePath& _rhs) const {
320       return _rhs < *this;
321     }
322     inline bool operator>=(const WritableProfilePath& _rhs) const {
323       return !(*this < _rhs);
324     }
325     inline bool operator<=(const WritableProfilePath& _rhs) const {
326       return !(_rhs < *this);
327     }
328 
329     static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_LOCAL;
toString()330     inline std::string toString() const {
331       std::ostringstream os;
332       os << "WritableProfilePath{";
333       switch (getTag()) {
334       case forPrimary: os << "forPrimary: " << ::android::internal::ToString(get<forPrimary>()); break;
335       case forSecondary: os << "forSecondary: " << ::android::internal::ToString(get<forSecondary>()); break;
336       }
337       os << "}";
338       return os.str();
339     }
340   private:
341     std::variant<::aidl::com::android::server::art::ProfilePath::PrimaryRefProfilePath, ::aidl::com::android::server::art::ProfilePath::SecondaryRefProfilePath> _value;
342   };
343   class TmpProfilePath {
344   public:
345     typedef std::false_type fixed_size;
346     static const char* descriptor;
347 
348     ::aidl::com::android::server::art::ProfilePath::WritableProfilePath finalPath;
349     std::string id;
350     std::string tmpPath;
351 
352     binder_status_t readFromParcel(const AParcel* parcel);
353     binder_status_t writeToParcel(AParcel* parcel) const;
354 
355     inline bool operator==(const TmpProfilePath& _rhs) const {
356       return std::tie(finalPath, id, tmpPath) == std::tie(_rhs.finalPath, _rhs.id, _rhs.tmpPath);
357     }
358     inline bool operator<(const TmpProfilePath& _rhs) const {
359       return std::tie(finalPath, id, tmpPath) < std::tie(_rhs.finalPath, _rhs.id, _rhs.tmpPath);
360     }
361     inline bool operator!=(const TmpProfilePath& _rhs) const {
362       return !(*this == _rhs);
363     }
364     inline bool operator>(const TmpProfilePath& _rhs) const {
365       return _rhs < *this;
366     }
367     inline bool operator>=(const TmpProfilePath& _rhs) const {
368       return !(*this < _rhs);
369     }
370     inline bool operator<=(const TmpProfilePath& _rhs) const {
371       return !(_rhs < *this);
372     }
373 
374     static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_LOCAL;
toString()375     inline std::string toString() const {
376       std::ostringstream _aidl_os;
377       _aidl_os << "TmpProfilePath{";
378       _aidl_os << "finalPath: " << ::android::internal::ToString(finalPath);
379       _aidl_os << ", id: " << ::android::internal::ToString(id);
380       _aidl_os << ", tmpPath: " << ::android::internal::ToString(tmpPath);
381       _aidl_os << "}";
382       return _aidl_os.str();
383     }
384   };
385   enum class Tag : int32_t {
386     primaryRefProfilePath = 0,
387     prebuiltProfilePath = 1,
388     primaryCurProfilePath = 2,
389     secondaryRefProfilePath = 3,
390     secondaryCurProfilePath = 4,
391     tmpProfilePath = 5,
392     dexMetadataPath = 6,
393   };
394 
395   // Expose tag symbols for legacy code
396   static const inline Tag primaryRefProfilePath = Tag::primaryRefProfilePath;
397   static const inline Tag prebuiltProfilePath = Tag::prebuiltProfilePath;
398   static const inline Tag primaryCurProfilePath = Tag::primaryCurProfilePath;
399   static const inline Tag secondaryRefProfilePath = Tag::secondaryRefProfilePath;
400   static const inline Tag secondaryCurProfilePath = Tag::secondaryCurProfilePath;
401   static const inline Tag tmpProfilePath = Tag::tmpProfilePath;
402   static const inline Tag dexMetadataPath = Tag::dexMetadataPath;
403 
404   template<typename _Tp>
405   static constexpr bool _not_self = !std::is_same_v<std::remove_cv_t<std::remove_reference_t<_Tp>>, ProfilePath>;
406 
ProfilePath()407   ProfilePath() : _value(std::in_place_index<static_cast<size_t>(primaryRefProfilePath)>, ::aidl::com::android::server::art::ProfilePath::PrimaryRefProfilePath()) { }
408 
409   template <typename _Tp, typename = std::enable_if_t<_not_self<_Tp>>>
410   // NOLINTNEXTLINE(google-explicit-constructor)
ProfilePath(_Tp && _arg)411   constexpr ProfilePath(_Tp&& _arg)
412       : _value(std::forward<_Tp>(_arg)) {}
413 
414   template <size_t _Np, typename... _Tp>
ProfilePath(std::in_place_index_t<_Np>,_Tp &&..._args)415   constexpr explicit ProfilePath(std::in_place_index_t<_Np>, _Tp&&... _args)
416       : _value(std::in_place_index<_Np>, std::forward<_Tp>(_args)...) {}
417 
418   template <Tag _tag, typename... _Tp>
make(_Tp &&..._args)419   static ProfilePath make(_Tp&&... _args) {
420     return ProfilePath(std::in_place_index<static_cast<size_t>(_tag)>, std::forward<_Tp>(_args)...);
421   }
422 
423   template <Tag _tag, typename _Tp, typename... _Up>
make(std::initializer_list<_Tp> _il,_Up &&..._args)424   static ProfilePath make(std::initializer_list<_Tp> _il, _Up&&... _args) {
425     return ProfilePath(std::in_place_index<static_cast<size_t>(_tag)>, std::move(_il), std::forward<_Up>(_args)...);
426   }
427 
getTag()428   Tag getTag() const {
429     return static_cast<Tag>(_value.index());
430   }
431 
432   template <Tag _tag>
get()433   const auto& get() const {
434     if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
435     return std::get<static_cast<size_t>(_tag)>(_value);
436   }
437 
438   template <Tag _tag>
get()439   auto& get() {
440     if (getTag() != _tag) { __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "bad access: a wrong tag"); }
441     return std::get<static_cast<size_t>(_tag)>(_value);
442   }
443 
444   template <Tag _tag, typename... _Tp>
set(_Tp &&..._args)445   void set(_Tp&&... _args) {
446     _value.emplace<static_cast<size_t>(_tag)>(std::forward<_Tp>(_args)...);
447   }
448 
449   binder_status_t readFromParcel(const AParcel* _parcel);
450   binder_status_t writeToParcel(AParcel* _parcel) const;
451 
452   inline bool operator==(const ProfilePath& _rhs) const {
453     return _value == _rhs._value;
454   }
455   inline bool operator<(const ProfilePath& _rhs) const {
456     return _value < _rhs._value;
457   }
458   inline bool operator!=(const ProfilePath& _rhs) const {
459     return !(*this == _rhs);
460   }
461   inline bool operator>(const ProfilePath& _rhs) const {
462     return _rhs < *this;
463   }
464   inline bool operator>=(const ProfilePath& _rhs) const {
465     return !(*this < _rhs);
466   }
467   inline bool operator<=(const ProfilePath& _rhs) const {
468     return !(_rhs < *this);
469   }
470 
471   static const ::ndk::parcelable_stability_t _aidl_stability = ::ndk::STABILITY_LOCAL;
toString()472   inline std::string toString() const {
473     std::ostringstream os;
474     os << "ProfilePath{";
475     switch (getTag()) {
476     case primaryRefProfilePath: os << "primaryRefProfilePath: " << ::android::internal::ToString(get<primaryRefProfilePath>()); break;
477     case prebuiltProfilePath: os << "prebuiltProfilePath: " << ::android::internal::ToString(get<prebuiltProfilePath>()); break;
478     case primaryCurProfilePath: os << "primaryCurProfilePath: " << ::android::internal::ToString(get<primaryCurProfilePath>()); break;
479     case secondaryRefProfilePath: os << "secondaryRefProfilePath: " << ::android::internal::ToString(get<secondaryRefProfilePath>()); break;
480     case secondaryCurProfilePath: os << "secondaryCurProfilePath: " << ::android::internal::ToString(get<secondaryCurProfilePath>()); break;
481     case tmpProfilePath: os << "tmpProfilePath: " << ::android::internal::ToString(get<tmpProfilePath>()); break;
482     case dexMetadataPath: os << "dexMetadataPath: " << ::android::internal::ToString(get<dexMetadataPath>()); break;
483     }
484     os << "}";
485     return os.str();
486   }
487 private:
488   std::variant<::aidl::com::android::server::art::ProfilePath::PrimaryRefProfilePath, ::aidl::com::android::server::art::ProfilePath::PrebuiltProfilePath, ::aidl::com::android::server::art::ProfilePath::PrimaryCurProfilePath, ::aidl::com::android::server::art::ProfilePath::SecondaryRefProfilePath, ::aidl::com::android::server::art::ProfilePath::SecondaryCurProfilePath, ::aidl::com::android::server::art::ProfilePath::TmpProfilePath, ::aidl::com::android::server::art::DexMetadataPath> _value;
489 };
490 }  // namespace art
491 }  // namespace server
492 }  // namespace android
493 }  // namespace com
494 }  // namespace aidl
495 namespace aidl {
496 namespace com {
497 namespace android {
498 namespace server {
499 namespace art {
toString(ProfilePath::WritableProfilePath::Tag val)500 [[nodiscard]] static inline std::string toString(ProfilePath::WritableProfilePath::Tag val) {
501   switch(val) {
502   case ProfilePath::WritableProfilePath::Tag::forPrimary:
503     return "forPrimary";
504   case ProfilePath::WritableProfilePath::Tag::forSecondary:
505     return "forSecondary";
506   default:
507     return std::to_string(static_cast<int32_t>(val));
508   }
509 }
510 }  // namespace art
511 }  // namespace server
512 }  // namespace android
513 }  // namespace com
514 }  // namespace aidl
515 namespace ndk {
516 namespace internal {
517 #pragma clang diagnostic push
518 #pragma clang diagnostic ignored "-Wc++17-extensions"
519 template <>
520 constexpr inline std::array<aidl::com::android::server::art::ProfilePath::WritableProfilePath::Tag, 2> enum_values<aidl::com::android::server::art::ProfilePath::WritableProfilePath::Tag> = {
521   aidl::com::android::server::art::ProfilePath::WritableProfilePath::Tag::forPrimary,
522   aidl::com::android::server::art::ProfilePath::WritableProfilePath::Tag::forSecondary,
523 };
524 #pragma clang diagnostic pop
525 }  // namespace internal
526 }  // namespace ndk
527 namespace aidl {
528 namespace com {
529 namespace android {
530 namespace server {
531 namespace art {
toString(ProfilePath::Tag val)532 [[nodiscard]] static inline std::string toString(ProfilePath::Tag val) {
533   switch(val) {
534   case ProfilePath::Tag::primaryRefProfilePath:
535     return "primaryRefProfilePath";
536   case ProfilePath::Tag::prebuiltProfilePath:
537     return "prebuiltProfilePath";
538   case ProfilePath::Tag::primaryCurProfilePath:
539     return "primaryCurProfilePath";
540   case ProfilePath::Tag::secondaryRefProfilePath:
541     return "secondaryRefProfilePath";
542   case ProfilePath::Tag::secondaryCurProfilePath:
543     return "secondaryCurProfilePath";
544   case ProfilePath::Tag::tmpProfilePath:
545     return "tmpProfilePath";
546   case ProfilePath::Tag::dexMetadataPath:
547     return "dexMetadataPath";
548   default:
549     return std::to_string(static_cast<int32_t>(val));
550   }
551 }
552 }  // namespace art
553 }  // namespace server
554 }  // namespace android
555 }  // namespace com
556 }  // namespace aidl
557 namespace ndk {
558 namespace internal {
559 #pragma clang diagnostic push
560 #pragma clang diagnostic ignored "-Wc++17-extensions"
561 template <>
562 constexpr inline std::array<aidl::com::android::server::art::ProfilePath::Tag, 7> enum_values<aidl::com::android::server::art::ProfilePath::Tag> = {
563   aidl::com::android::server::art::ProfilePath::Tag::primaryRefProfilePath,
564   aidl::com::android::server::art::ProfilePath::Tag::prebuiltProfilePath,
565   aidl::com::android::server::art::ProfilePath::Tag::primaryCurProfilePath,
566   aidl::com::android::server::art::ProfilePath::Tag::secondaryRefProfilePath,
567   aidl::com::android::server::art::ProfilePath::Tag::secondaryCurProfilePath,
568   aidl::com::android::server::art::ProfilePath::Tag::tmpProfilePath,
569   aidl::com::android::server::art::ProfilePath::Tag::dexMetadataPath,
570 };
571 #pragma clang diagnostic pop
572 }  // namespace internal
573 }  // namespace ndk
574