Add support for Rank and scalar tensors

!armnn:3330

Signed-off-by: Finn Williams <Finn.Williams@Arm.com>
Change-Id: Icc429d9fabb570193d12bffef0e00dda7b51032f
diff --git a/Utils.hpp b/Utils.hpp
index b61ddb2..d58d273 100644
--- a/Utils.hpp
+++ b/Utils.hpp
@@ -150,18 +150,24 @@
 {
     V1_2::OutputShape shape;
 
-    android::hardware::hidl_vec<uint32_t> dimensions;
-
     armnn::TensorShape tensorShape = info.GetShape();
-    const unsigned int numDims = tensorShape.GetNumDimensions();
-    dimensions.resize(numDims);
-
-    for (unsigned int outputIdx = 0u; outputIdx < numDims; ++outputIdx)
+    // Android will expect scalars as a zero dimensional tensor
+    if(tensorShape.GetDimensionality() == armnn::Dimensionality::Scalar)
     {
-        dimensions[outputIdx] = tensorShape[outputIdx];
+         shape.dimensions = android::hardware::hidl_vec<uint32_t>{};
+    }
+    else
+    {
+        android::hardware::hidl_vec<uint32_t> dimensions;
+        const unsigned int numDims = tensorShape.GetNumDimensions();
+        dimensions.resize(numDims);
+        for (unsigned int outputIdx = 0u; outputIdx < numDims; ++outputIdx)
+        {
+            dimensions[outputIdx] = tensorShape[outputIdx];
+        }
+        shape.dimensions = dimensions;
     }
 
-    shape.dimensions = dimensions;
     shape.isSufficient = true;
 
     return shape;