diff options
author | Aron Virginas-Tar <Aron.Virginas-Tar@arm.com> | 2019-02-21 15:45:03 +0000 |
---|---|---|
committer | Aron Virginas-Tar <aron.virginas-tar@arm.com> | 2019-02-22 10:10:52 +0000 |
commit | 06e25c41e8727cc859c2b6d1988a988e90bb537b (patch) | |
tree | 4d367417232322b18a824b59f9accab623f880dc /src/armnn/Tensor.cpp | |
parent | 8ddae33ada66cc2ecdc0cde7799d81dda7532fb5 (diff) | |
download | armnn-06e25c41e8727cc859c2b6d1988a988e90bb537b.tar.gz |
IVGCVSW-2749 Throw exception in TensorShape when requested index >= number of dimensions
Change-Id: I3589b1e901b0f81f6bb17848046a22829f91bb9e
Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com>
Diffstat (limited to 'src/armnn/Tensor.cpp')
-rw-r--r-- | src/armnn/Tensor.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/armnn/Tensor.cpp b/src/armnn/Tensor.cpp index 6e09e3bc59..da19e5b97a 100644 --- a/src/armnn/Tensor.cpp +++ b/src/armnn/Tensor.cpp @@ -11,6 +11,8 @@ #include <boost/log/trivial.hpp> #include <boost/numeric/conversion/cast.hpp> +#include <sstream> + namespace armnn { @@ -78,6 +80,18 @@ TensorShape& TensorShape::operator =(const TensorShape& other) return *this; } +unsigned int TensorShape::operator[](unsigned int i) const +{ + CheckDimensionIndex(i); + return m_Dimensions.at(i); +} + +unsigned int& TensorShape::operator[](unsigned int i) +{ + CheckDimensionIndex(i); + return m_Dimensions.at(i); +} + bool TensorShape::operator==(const TensorShape& other) const { return ((m_NumDimensions == other.m_NumDimensions) && @@ -105,6 +119,16 @@ unsigned int TensorShape::GetNumElements() const return count; } +void TensorShape::CheckDimensionIndex(unsigned int i) const +{ + if (i >= m_NumDimensions) + { + std::stringstream errorMessage; + errorMessage << "Invalid dimension index: " << i << " (number of dimensions is " << m_NumDimensions << ")"; + throw InvalidArgumentException(errorMessage.str(), CHECK_LOCATION()); + } +} + // --- // --- TensorInfo // --- |