Merge "Cast to the underlying type for union tags" am: 6cd0d474b2 am: 5eb895c047

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1999055

Change-Id: I9023258edf659c7994e1f7762b170b232962994e
This commit is contained in:
Treehugger Robot 2022-03-01 01:07:50 +00:00 committed by Automerger Merge Worker
commit bbd66d27a0
3 changed files with 11 additions and 7 deletions

View file

@ -26,6 +26,8 @@
#include <nnapi/Types.h>
#include <nnapi/Validation.h>
#include <type_traits>
namespace aidl::android::hardware::neuralnetworks::utils {
constexpr auto kDefaultPriority = Priority::MEDIUM;
@ -80,6 +82,11 @@ auto convertFromNonCanonical(const Type& nonCanonicalObject)
return convert(NN_TRY(nn::convert(nonCanonicalObject)));
}
template <typename Type>
constexpr std::underlying_type_t<Type> underlyingType(Type value) {
return static_cast<std::underlying_type_t<Type>>(value);
}
nn::GeneralResult<Memory> clone(const Memory& memory);
nn::GeneralResult<Request> clone(const Request& request);
nn::GeneralResult<RequestMemoryPool> clone(const RequestMemoryPool& requestPool);

View file

@ -57,10 +57,6 @@
while (UNLIKELY(value > std::numeric_limits<int32_t>::max())) return NN_ERROR()
namespace {
template <typename Type>
constexpr std::underlying_type_t<Type> underlyingType(Type value) {
return static_cast<std::underlying_type_t<Type>>(value);
}
constexpr int64_t kNoTiming = -1;
@ -70,6 +66,7 @@ namespace android::nn {
namespace {
using ::aidl::android::hardware::common::NativeHandle;
using ::aidl::android::hardware::neuralnetworks::utils::underlyingType;
template <typename Input>
using UnvalidatedConvertOutput =
@ -404,7 +401,7 @@ GeneralResult<SharedMemory> unvalidatedConvert(const aidl_hal::Memory& memory) {
#endif // __ANDROID__
}
}
return NN_ERROR() << "Unrecognized Memory::Tag: " << memory.getTag();
return NN_ERROR() << "Unrecognized Memory::Tag: " << underlyingType(memory.getTag());
}
GeneralResult<Timing> unvalidatedConvert(const aidl_hal::Timing& timing) {

View file

@ -88,7 +88,7 @@ nn::GeneralResult<Memory> clone(const Memory& memory) {
return Memory::make<Memory::Tag::hardwareBuffer>(std::move(handle));
}
}
return (NN_ERROR() << "Unrecognized Memory::Tag: " << memory.getTag())
return (NN_ERROR() << "Unrecognized Memory::Tag: " << underlyingType(memory.getTag()))
.
operator nn::GeneralResult<Memory>();
}
@ -103,7 +103,7 @@ nn::GeneralResult<RequestMemoryPool> clone(const RequestMemoryPool& requestPool)
}
// Using explicit type conversion because std::variant inside the RequestMemoryPool confuses the
// compiler.
return (NN_ERROR() << "Unrecognized request pool tag: " << requestPool.getTag())
return (NN_ERROR() << "Unrecognized request pool tag: " << underlyingType(requestPool.getTag()))
.
operator nn::GeneralResult<RequestMemoryPool>();
}