diff options
| author | 2023-01-27 00:52:27 +0000 | |
|---|---|---|
| committer | 2023-01-27 00:52:27 +0000 | |
| commit | c4914ee17a9217a3b46e0a4b08f36ce4cf86ae2d (patch) | |
| tree | 2859c4914649f770b1a8d194e09516180f54ba61 /libs | |
| parent | 2318e69157c5a7cf288de31b66c51aab7196cf16 (diff) | |
| parent | dd511058abd4c8014aba989c78584639cc65fb8d (diff) | |
Merge "libbinder*: IBinder/IInterface toString impl"
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/binder/ndk/include_cpp/android/binder_to_string.h | 46 |
1 files changed, 19 insertions, 27 deletions
diff --git a/libs/binder/ndk/include_cpp/android/binder_to_string.h b/libs/binder/ndk/include_cpp/android/binder_to_string.h index 9b0d222147..b0c7f6d4a9 100644 --- a/libs/binder/ndk/include_cpp/android/binder_to_string.h +++ b/libs/binder/ndk/include_cpp/android/binder_to_string.h @@ -139,30 +139,6 @@ class IsIterable { }; template <typename _T> -class ToEmptyString { - template <typename _U> - static std::enable_if_t<false -#ifdef HAS_NDK_INTERFACE - || std::is_base_of_v<::ndk::ICInterface, _U> -#if __ANDROID_API__ >= 31 - || std::is_same_v<::ndk::AParcelableHolder, _U> -#endif -#endif // HAS_NDK_INTERFACE -#ifdef HAS_CPP_INTERFACE - || std::is_base_of_v<IInterface, _U> || - std::is_same_v<IBinder, _U> -#endif - , - std::true_type> - _test(int); - template <typename _U> - static std::false_type _test(...); - - public: - enum { value = decltype(_test<_T>(0))::value }; -}; - -template <typename _T> struct TypeDependentFalse { enum { value = false }; }; @@ -171,9 +147,7 @@ struct TypeDependentFalse { template <typename _T> std::string ToString(const _T& t) { - if constexpr (details::ToEmptyString<_T>::value) { - return "<unimplemented>"; - } else if constexpr (std::is_same_v<bool, _T>) { + if constexpr (std::is_same_v<bool, _T>) { return t ? "true" : "false"; } else if constexpr (std::is_same_v<char16_t, _T>) { // TODO(b/244494451): codecvt is deprecated in C++17 -- suppress the @@ -193,6 +167,24 @@ std::string ToString(const _T& t) { return ss.str(); } else if constexpr (std::is_same_v<::ndk::ScopedFileDescriptor, _T>) { return "fd:" + std::to_string(t.get()); + } else if constexpr (std::is_base_of_v<::ndk::ICInterface, _T>) { + // TODO(b/266248339): this format is to make it easy to handle resolv_integration_test + // freezing the output format. We would like to print more info. + return "<interface>"; +#if __ANDROID_API__ >= 31 + } else if constexpr (std::is_same_v<::ndk::AParcelableHolder, _T>) { + return "AParcelableHolder"; +#endif +#endif // HAS_NDK_INTERFACE +#ifdef HAS_CPP_INTERFACE + } else if constexpr (std::is_base_of_v<IInterface, _T>) { + std::stringstream ss; + ss << "interface:" << std::hex << &t; + return ss.str(); + } else if constexpr (std::is_same_v<IBinder, _T>) { + std::stringstream ss; + ss << "binder:" << std::hex << &t; + return ss.str(); #endif #ifdef HAS_STRING16 } else if constexpr (std::is_same_v<String16, _T>) { |