IVGCVSW-3132 Reintroduce SubGraph definition, but deprecated

 * Restored old SubGraph class definition as an alias of SubgraphView
   for backward compatibility
 * Restored SubGraphUniquePtr
 * Restored CreateSubGraphConverter method (and the corresponding
   ISubGraphConverterPtr type) as a deprecated method that's been
   removed from the backend interface
 * Chaged the defautl implementation of OptimizeSubgraphView to call
   the deprecated OptimizeSubGraph
 * Changed the default implementation of OptimizeSubgraphView in the
   backends

Change-Id: If69903926bf5ff2aae52c9b64b4572b355662757
Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com>
diff --git a/src/backends/backendsCommon/IBackendInternal.hpp b/src/backends/backendsCommon/IBackendInternal.hpp
index 72214b8..fe9d620 100644
--- a/src/backends/backendsCommon/IBackendInternal.hpp
+++ b/src/backends/backendsCommon/IBackendInternal.hpp
@@ -47,6 +47,29 @@
     using GraphUniquePtr = std::unique_ptr<Graph>;
     using SubgraphViewUniquePtr = std::unique_ptr<SubgraphView>;
 
+    ARMNN_NO_DEPRECATE_WARN_BEGIN
+    using ISubGraphConverterPtr ARMNN_DEPRECATED_MSG("This type is no longer supported")
+        = std::unique_ptr<ISubGraphConverter>;
+    using SubGraphUniquePtr ARMNN_DEPRECATED_MSG("SubGraph is deprecated, use SubgraphView instead")
+        = std::unique_ptr<SubGraph>;
+
+    ARMNN_DEPRECATED_MSG("This method is no longer supported")
+    virtual ISubGraphConverterPtr CreateSubGraphConverter(const std::shared_ptr<SubGraph>& subGraph) const
+    {
+        return ISubGraphConverterPtr{};
+    }
+
+    ARMNN_DEPRECATED_MSG("Use \"OptimizationViews OptimizeSubgraphView(const SubgraphView&)\" instead")
+    virtual Optimizations GetOptimizations() const = 0;
+
+    ARMNN_DEPRECATED_MSG("Use \"OptimizationViews OptimizeSubgraphView(const SubgraphView&)\" instead")
+    virtual SubGraphUniquePtr OptimizeSubGraph(const SubGraph& subGraph, bool& optimizationAttempted) const
+    {
+        optimizationAttempted = false;
+        return nullptr;
+    }
+    ARMNN_NO_DEPRECATE_WARN_END
+
     virtual IMemoryManagerUniquePtr CreateMemoryManager() const = 0;
 
     virtual IWorkloadFactoryPtr CreateWorkloadFactory(
@@ -56,24 +79,14 @@
 
     virtual ILayerSupportSharedPtr GetLayerSupport() const = 0;
 
-    ARMNN_DEPRECATED_MSG("Use \"OptimizationViews OptimizeSubgraphView(const SubgraphView&)\" instead")
-    virtual Optimizations GetOptimizations() const = 0;
-
-    ARMNN_DEPRECATED_MSG("Use \"OptimizationViews OptimizeSubgraphView(const SubgraphView&)\" instead")
-    virtual SubgraphViewUniquePtr OptimizeSubgraphView(const SubgraphView& subgraph, bool& optimizationAttempted) const
-    {
-        optimizationAttempted = false;
-        return nullptr;
-    }
-
-    // Default implementation of OptimizeSubgraphView for backward compatibility with old API.
+    // Default implementation of OptimizeSubgraphView for backward compatibility with the old API.
     // Override this method with a custom optimization implementation.
     virtual OptimizationViews OptimizeSubgraphView(const SubgraphView& subgraph) const
     {
         bool optimizationAttempted = false;
 
         ARMNN_NO_DEPRECATE_WARN_BEGIN
-        SubgraphViewUniquePtr optSubgraph = OptimizeSubgraphView(subgraph, optimizationAttempted);
+        SubGraphUniquePtr optSubgraph = OptimizeSubGraph(subgraph, optimizationAttempted);
         ARMNN_NO_DEPRECATE_WARN_END
 
         OptimizationViews result;