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/Types.h>
|
||||||
#include <nnapi/Validation.h>
|
#include <nnapi/Validation.h>
|
||||||
|
|
||||||
|
#include <type_traits>
|
||||||
|
|
||||||
namespace aidl::android::hardware::neuralnetworks::utils {
|
namespace aidl::android::hardware::neuralnetworks::utils {
|
||||||
|
|
||||||
constexpr auto kDefaultPriority = Priority::MEDIUM;
|
constexpr auto kDefaultPriority = Priority::MEDIUM;
|
||||||
|
@ -80,6 +82,11 @@ auto convertFromNonCanonical(const Type& nonCanonicalObject)
|
||||||
return convert(NN_TRY(nn::convert(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<Memory> clone(const Memory& memory);
|
||||||
nn::GeneralResult<Request> clone(const Request& request);
|
nn::GeneralResult<Request> clone(const Request& request);
|
||||||
nn::GeneralResult<RequestMemoryPool> clone(const RequestMemoryPool& requestPool);
|
nn::GeneralResult<RequestMemoryPool> clone(const RequestMemoryPool& requestPool);
|
||||||
|
|
|
@ -57,10 +57,6 @@
|
||||||
while (UNLIKELY(value > std::numeric_limits<int32_t>::max())) return NN_ERROR()
|
while (UNLIKELY(value > std::numeric_limits<int32_t>::max())) return NN_ERROR()
|
||||||
|
|
||||||
namespace {
|
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;
|
constexpr int64_t kNoTiming = -1;
|
||||||
|
|
||||||
|
@ -70,6 +66,7 @@ namespace android::nn {
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
using ::aidl::android::hardware::common::NativeHandle;
|
using ::aidl::android::hardware::common::NativeHandle;
|
||||||
|
using ::aidl::android::hardware::neuralnetworks::utils::underlyingType;
|
||||||
|
|
||||||
template <typename Input>
|
template <typename Input>
|
||||||
using UnvalidatedConvertOutput =
|
using UnvalidatedConvertOutput =
|
||||||
|
@ -404,7 +401,7 @@ GeneralResult<SharedMemory> unvalidatedConvert(const aidl_hal::Memory& memory) {
|
||||||
#endif // __ANDROID__
|
#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) {
|
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 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>();
|
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
|
// Using explicit type conversion because std::variant inside the RequestMemoryPool confuses the
|
||||||
// compiler.
|
// compiler.
|
||||||
return (NN_ERROR() << "Unrecognized request pool tag: " << requestPool.getTag())
|
return (NN_ERROR() << "Unrecognized request pool tag: " << underlyingType(requestPool.getTag()))
|
||||||
.
|
.
|
||||||
operator nn::GeneralResult<RequestMemoryPool>();
|
operator nn::GeneralResult<RequestMemoryPool>();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue