diff options
Diffstat (limited to 'neuralnetworks/1.1/utils/src/Conversions.cpp')
-rw-r--r-- | neuralnetworks/1.1/utils/src/Conversions.cpp | 42 |
1 files changed, 12 insertions, 30 deletions
diff --git a/neuralnetworks/1.1/utils/src/Conversions.cpp b/neuralnetworks/1.1/utils/src/Conversions.cpp index d07f7d00bc..467ceb389b 100644 --- a/neuralnetworks/1.1/utils/src/Conversions.cpp +++ b/neuralnetworks/1.1/utils/src/Conversions.cpp @@ -35,11 +35,7 @@ #include <type_traits> #include <utility> -namespace { - -constexpr auto kVersion = android::nn::Version::ANDROID_P; - -} // namespace +#include "Utils.h" namespace android::nn { namespace { @@ -47,13 +43,13 @@ namespace { using hardware::hidl_vec; template <typename Input> -using unvalidatedConvertOutput = +using UnvalidatedConvertOutput = std::decay_t<decltype(unvalidatedConvert(std::declval<Input>()).value())>; template <typename Type> -GeneralResult<std::vector<unvalidatedConvertOutput<Type>>> unvalidatedConvert( +GeneralResult<std::vector<UnvalidatedConvertOutput<Type>>> unvalidatedConvert( const hidl_vec<Type>& arguments) { - std::vector<unvalidatedConvertOutput<Type>> canonical; + std::vector<UnvalidatedConvertOutput<Type>> canonical; canonical.reserve(arguments.size()); for (const auto& argument : arguments) { canonical.push_back(NN_TRY(nn::unvalidatedConvert(argument))); @@ -62,16 +58,9 @@ GeneralResult<std::vector<unvalidatedConvertOutput<Type>>> unvalidatedConvert( } template <typename Type> -decltype(nn::unvalidatedConvert(std::declval<Type>())) validatedConvert(const Type& halObject) { +GeneralResult<UnvalidatedConvertOutput<Type>> validatedConvert(const Type& halObject) { auto canonical = NN_TRY(nn::unvalidatedConvert(halObject)); - const auto maybeVersion = validate(canonical); - if (!maybeVersion.has_value()) { - return error() << maybeVersion.error(); - } - const auto version = maybeVersion.value(); - if (version > kVersion) { - return NN_ERROR() << "Insufficient version: " << version << " vs required " << kVersion; - } + NN_TRY(hal::V1_1::utils::compliantVersion(canonical)); return canonical; } @@ -180,13 +169,13 @@ nn::GeneralResult<hidl_memory> unvalidatedConvert(const nn::SharedMemory& memory } template <typename Input> -using unvalidatedConvertOutput = +using UnvalidatedConvertOutput = std::decay_t<decltype(unvalidatedConvert(std::declval<Input>()).value())>; template <typename Type> -nn::GeneralResult<hidl_vec<unvalidatedConvertOutput<Type>>> unvalidatedConvert( +nn::GeneralResult<hidl_vec<UnvalidatedConvertOutput<Type>>> unvalidatedConvert( const std::vector<Type>& arguments) { - hidl_vec<unvalidatedConvertOutput<Type>> halObject(arguments.size()); + hidl_vec<UnvalidatedConvertOutput<Type>> halObject(arguments.size()); for (size_t i = 0; i < arguments.size(); ++i) { halObject[i] = NN_TRY(unvalidatedConvert(arguments[i])); } @@ -194,16 +183,9 @@ nn::GeneralResult<hidl_vec<unvalidatedConvertOutput<Type>>> unvalidatedConvert( } template <typename Type> -decltype(utils::unvalidatedConvert(std::declval<Type>())) validatedConvert(const Type& canonical) { - const auto maybeVersion = nn::validate(canonical); - if (!maybeVersion.has_value()) { - return nn::error() << maybeVersion.error(); - } - const auto version = maybeVersion.value(); - if (version > kVersion) { - return NN_ERROR() << "Insufficient version: " << version << " vs required " << kVersion; - } - return utils::unvalidatedConvert(canonical); +nn::GeneralResult<UnvalidatedConvertOutput<Type>> validatedConvert(const Type& canonical) { + NN_TRY(compliantVersion(canonical)); + return unvalidatedConvert(canonical); } } // anonymous namespace |