IVGCVSW-1770: Refactor ModelToINetworkConverter to allow conversion of HAL1.1 operators

Change-Id: I9b10f0a9c88344df108b2325c0233f9660fa6b7c
diff --git a/Utils.hpp b/Utils.hpp
index e805f26..5d9f700 100644
--- a/Utils.hpp
+++ b/Utils.hpp
@@ -43,7 +43,38 @@
 armnn::TensorInfo GetTensorInfoForOperand(const Operand& operand);
 
 std::string GetOperandSummary(const Operand& operand);
-std::string GetModelSummary(const ::android::hardware::neuralnetworks::V1_0::Model& model);
+
+template <typename Model>
+std::string GetModelSummary(const Model& model)
+{
+    std::stringstream result;
+
+    result << model.inputIndexes.size() << " input(s), " << model.operations.size() << " operation(s), " <<
+        model.outputIndexes.size() << " output(s), " << model.operands.size() << " operand(s)" << std::endl;
+
+    result << "Inputs: ";
+    for (uint32_t i = 0; i < model.inputIndexes.size(); i++)
+    {
+        result << GetOperandSummary(model.operands[model.inputIndexes[i]]) << ", ";
+    }
+    result << std::endl;
+
+    result << "Operations: ";
+    for (uint32_t i = 0; i < model.operations.size(); i++)
+    {
+        result << toString(model.operations[i].type).c_str() << ", ";
+    }
+    result << std::endl;
+
+    result << "Outputs: ";
+    for (uint32_t i = 0; i < model.outputIndexes.size(); i++)
+    {
+        result << GetOperandSummary(model.operands[model.outputIndexes[i]]) << ", ";
+    }
+    result << std::endl;
+
+    return result.str();
+}
 
 void DumpTensor(const std::string& dumpDir,
                 const std::string& requestName,
@@ -59,4 +90,4 @@
                                  const std::string& dumpDir,
                                  const ::android::hardware::neuralnetworks::V1_0::Model& model);
 
-}
+}
\ No newline at end of file