Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c5087c06 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Cast to the underlying type for union tags" am: 6cd0d474 am: 5eb895c0 am: bbd66d27

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

Change-Id: Ie0a38cc29d50c65b8168435c70786321fc9de199
parents 5974f586 bbd66d27
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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);
+2 −5
Original line number Diff line number Diff line
@@ -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) {
+2 −2
Original line number Diff line number Diff line
@@ -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>();
}