blob: 243d22e4449d5599fb9dc161c6ceed9c30174f73 [file] [log] [blame]
//
// Copyright © 2017 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//
#include "VerificationHelpers.hpp"
#include <boost/format.hpp>
#include <armnn/Exceptions.hpp>
using namespace armnn;
namespace armnnUtils
{
void CheckValidSize(std::initializer_list<size_t> validInputCounts,
size_t actualValue,
const char* validExpr,
const char* actualExpr,
const CheckLocation& location)
{
bool isValid = std::any_of(validInputCounts.begin(),
validInputCounts.end(),
[&actualValue](size_t x) { return x == actualValue; } );
if (!isValid)
{
throw ParseException(
boost::str(
boost::format("%1% = %2% is not valid, not in {%3%}. %4%") %
actualExpr %
actualValue %
validExpr %
location.AsString()));
}
}
uint32_t NonNegative(const char* expr,
int32_t value,
const CheckLocation& location)
{
if (value < 0)
{
throw ParseException(
boost::str(
boost::format("'%1%' must be non-negative, received: %2% at %3%") %
expr %
value %
location.AsString() ));
}
else
{
return static_cast<uint32_t>(value);
}
}
int32_t VerifyInt32(const char* expr,
int64_t value,
const armnn::CheckLocation& location)
{
if (value < std::numeric_limits<int>::min() || value > std::numeric_limits<int>::max())
{
throw ParseException(
boost::str(
boost::format("'%1%' must should fit into a int32 (ArmNN don't support int64), received: %2% at %3%") %
expr %
value %
location.AsString() ));
}
else
{
return static_cast<int32_t>(value);
}
}
}// armnnUtils