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:
commit
bbd66d27a0
3 changed files with 11 additions and 7 deletions
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue