Loading libs/binder/ndk/include_cpp/android/binder_to_string.h +19 −27 Original line number Diff line number Diff line Loading @@ -138,30 +138,6 @@ class IsIterable { enum { value = decltype(_test<_T>(0))::value }; }; 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 }; Loading @@ -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 Loading @@ -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>) { Loading Loading
libs/binder/ndk/include_cpp/android/binder_to_string.h +19 −27 Original line number Diff line number Diff line Loading @@ -138,30 +138,6 @@ class IsIterable { enum { value = decltype(_test<_T>(0))::value }; }; 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 }; Loading @@ -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 Loading @@ -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>) { Loading