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

Commit bbd66d27 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

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

Change-Id: I9023258edf659c7994e1f7762b170b232962994e
parents 3d4ad825 5eb895c0
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>();
}