IVGCVSW-6712 Move SubgraphView to backends include folder

 * Make subgraphview a public interface for backends.

Change-Id: I615a29ffec41e947215c3d29c2d7d214e327fb90
Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 629a798..5368401 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -185,6 +185,7 @@
     include/armnn/utility/PolymorphicDowncast.hpp
     include/armnn/utility/StringUtils.hpp
     include/armnn/utility/TransformIterator.hpp
+    include/armnn/backends/SubgraphView.hpp
     src/armnn/layers/LayerCloneBase.hpp
     src/armnn/layers/LayerWithParameters.hpp
     src/armnn/layers/ActivationLayer.hpp
@@ -386,7 +387,6 @@
     src/armnn/SerializeLayerParameters.cpp
     src/armnn/SerializeLayerParameters.hpp
     src/armnn/SubgraphView.cpp
-    src/armnn/SubgraphView.hpp
     src/armnn/SubgraphViewSelector.cpp
     src/armnn/SubgraphViewSelector.hpp
     src/armnn/Tensor.cpp
diff --git a/include/armnn/backends/IBackendInternal.hpp b/include/armnn/backends/IBackendInternal.hpp
index 0756fdd..c64150a 100644
--- a/include/armnn/backends/IBackendInternal.hpp
+++ b/include/armnn/backends/IBackendInternal.hpp
@@ -10,12 +10,12 @@
 #include <armnn/Deprecated.hpp>
 
 #include <ISubgraphViewConverter.hpp>
-#include <SubgraphView.hpp>
 
 #include <armnn/backends/IBackendContext.hpp>
 #include <armnn/backends/IMemoryManager.hpp>
 #include <armnn/backends/ITensorHandleFactory.hpp>
 #include <armnn/backends/OptimizationViews.hpp>
+#include <armnn/backends/SubgraphView.hpp>
 #include <armnn/backends/profiling/IBackendProfiling.hpp>
 #include <armnn/backends/profiling/IBackendProfilingContext.hpp>
 
diff --git a/include/armnn/backends/OptimizationViews.hpp b/include/armnn/backends/OptimizationViews.hpp
index f3479fe..3146dd7 100644
--- a/include/armnn/backends/OptimizationViews.hpp
+++ b/include/armnn/backends/OptimizationViews.hpp
@@ -5,7 +5,7 @@
 
 #pragma once
 
-#include <SubgraphView.hpp>
+#include <armnn/backends/SubgraphView.hpp>
 
 namespace armnn
 {
diff --git a/include/armnn/backends/SubgraphView.hpp b/include/armnn/backends/SubgraphView.hpp
new file mode 100644
index 0000000..b5a74ba
--- /dev/null
+++ b/include/armnn/backends/SubgraphView.hpp
@@ -0,0 +1,172 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <Layer.hpp>
+#include <Graph.hpp>
+
+#include <vector>
+#include <list>
+
+namespace armnn
+{
+
+///
+/// The SubgraphView class represents a subgraph of a Graph.
+/// The data it holds, points to data held by layers of the Graph, so the
+/// the contents of the SubgraphView become invalid when the Layers are destroyed
+/// or changed.
+///
+class SubgraphView final
+{
+public:
+    template <typename Func>
+    void ForEachLayer(Func func) const
+    {
+        for (auto it = m_Layers.begin(); it != m_Layers.end(); )
+        {
+             auto next = std::next(it);
+             func(*it);
+             it = next;
+        }
+    }
+
+    template <typename Func>
+    void ForEachIConnectableLayer(Func func) const
+    {
+        for (auto it = m_IConnectableLayers.begin(); it != m_IConnectableLayers.end(); )
+        {
+             auto next = std::next(it);
+             func(*it);
+             it = next;
+        }
+    }
+
+    using SubgraphViewPtr = std::unique_ptr<SubgraphView>;
+    using InputSlots = std::vector<InputSlot*>;
+    using IInputSlots = std::vector<IInputSlot*>;
+    using OutputSlots = std::vector<OutputSlot*>;
+    using IOutputSlots = std::vector<IOutputSlot*>;
+    using Layers = std::list<Layer*>;
+    using IConnectableLayers = std::list<IConnectableLayer*>;
+    using Iterator = Layers::iterator;
+    using IConnectableLayerIterator = IConnectableLayers::iterator;
+    using ConstIterator = Layers::const_iterator;
+    using ConstIConnectableIterator = IConnectableLayers::const_iterator;
+
+    /// Constructs a sub-graph from the entire given graph.
+    explicit SubgraphView(Graph& graph);
+
+    /// Constructs a sub-graph with the given arguments.
+    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use constructor with arguments: "
+                                      "IConnectableLayers, IInputSlots and IOutputSlots", "22.08")
+    SubgraphView(InputSlots&& inputs, OutputSlots&& outputs, Layers&& layers);
+
+    /// Constructs a sub-graph with the given arguments.
+    SubgraphView(IConnectableLayers&& layers, IInputSlots&& inputs, IOutputSlots&& outputs);
+
+    /// Copy-constructor.
+    SubgraphView(const SubgraphView& subgraph);
+
+    /// Move-constructor.
+    SubgraphView(SubgraphView&& subgraph);
+
+    /// Constructs a sub-graph with only the given layer.
+    SubgraphView(IConnectableLayer* layer);
+
+    /// Move-assignment operator.
+    SubgraphView& operator=(SubgraphView&& other);
+
+    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIInputSlots() returning"
+                                      " public IInputSlots", "22.08")
+    const InputSlots& GetInputSlots() const;
+    const IInputSlots& GetIInputSlots() const;
+
+    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIOutputSlots() returning"
+                                      " public IOutputSlots", "22.08")
+    const OutputSlots& GetOutputSlots() const;
+    const IOutputSlots& GetIOutputSlots() const;
+
+    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIConnectableLayers() "
+                                      "returning public IConnectableLayers", "22.08")
+    const Layers& GetLayers() const;
+    const IConnectableLayers& GetIConnectableLayers() const;
+
+    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIInputSlot() returning public "
+                                      "IInputSlot", "22.08")
+    const InputSlot* GetInputSlot(unsigned int index) const;
+    const IInputSlot* GetIInputSlot(unsigned int index) const;
+    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIInputSlot() returning public "
+                                      "IInputSlot", "22.08")
+    InputSlot* GetInputSlot(unsigned int index);
+    IInputSlot* GetIInputSlot(unsigned int index);
+
+    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIOutputSlot() returning"
+                                      " public IOutputSlot", "22.08")
+    const OutputSlot* GetOutputSlot(unsigned int index) const;
+    const IOutputSlot* GetIOutputSlot(unsigned int index) const;
+    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIOutputSlot() returning"
+                                      " public IOutputSlot", "22.08")
+    OutputSlot* GetOutputSlot(unsigned int index);
+    IOutputSlot* GetIOutputSlot(unsigned int index);
+
+    unsigned int GetNumInputSlots() const;
+    unsigned int GetNumOutputSlots() const;
+
+    ARMNN_DEPRECATED_MSG_CHANGE_DATE("This function is deprecated and will be changed to return an "
+                                     "IConnectableLayerIterator, until that occurs in 23.02; please use "
+                                     "beginIConnectable() returning public IConnectableLayerIterator", "23.02")
+    Iterator begin();
+    IConnectableLayerIterator beginIConnectable();
+    ARMNN_DEPRECATED_MSG_CHANGE_DATE("This function is deprecated and will be changed to return an "
+                                     "IConnectableLayerIterator, until that occurs in 23.02; please use "
+                                     "endIConnectable() returning public IConnectableLayerIterator", "23.02")
+    Iterator end();
+    IConnectableLayerIterator endIConnectable();
+
+    ARMNN_DEPRECATED_MSG_CHANGE_DATE("This function is deprecated and will be changed to return an "
+                                     "ConstIConnectableIterator, until that occurs in 23.02; please use "
+                                     "beginIConnectable() returning public ConstIConnectableIterator", "23.02")
+    ConstIterator begin() const;
+    ConstIConnectableIterator beginIConnectable() const;
+    ARMNN_DEPRECATED_MSG_CHANGE_DATE("This function is deprecated and will be changed to return an "
+                                     "ConstIConnectableIterator, until that occurs in 23.02; please use "
+                                     "endIConnectable() returning public ConstIConnectableIterator", "23.02")
+    ConstIterator end() const;
+    ConstIConnectableIterator endIConnectable() const;
+
+    ARMNN_DEPRECATED_MSG_CHANGE_DATE("This function is deprecated and will be changed to return an "
+                                     "ConstIConnectableIterator, until that occurs in 23.02; please use "
+                                     "cbeginIConnectable() returning public ConstIConnectableIterator", "23.02")
+    ConstIterator cbegin() const;
+    ConstIConnectableIterator cbeginIConnectable() const;
+    ARMNN_DEPRECATED_MSG_CHANGE_DATE("This function is deprecated and will be changed to return an "
+                                     "ConstIConnectableIterator, until that occurs in 23.02; please use "
+                                     "cendIConnectable() returning public ConstIConnectableIterator", "23.02")
+    ConstIterator cend() const;
+    ConstIConnectableIterator cendIConnectable() const;
+
+    void Clear();
+
+private:
+    void CheckSubgraph();
+
+    /// Arrange the order of layers topologically so that nodes can be visited in valid order
+    void ArrangeBySortOrder();
+
+    /// The list of pointers to the input slots of the parent graph.
+    InputSlots m_InputSlots;
+    IInputSlots m_IInputSlots;
+
+    /// The list of pointers to the output slots of the parent graph.
+    OutputSlots m_OutputSlots;
+    IOutputSlots m_IOutputSlots;
+
+    /// The list of pointers to the layers of the parent graph.
+    Layers m_Layers;
+    IConnectableLayers m_IConnectableLayers;
+};
+} // namespace armnn
diff --git a/src/armnn/Graph.cpp b/src/armnn/Graph.cpp
index cdb3234..1bea6cc 100644
--- a/src/armnn/Graph.cpp
+++ b/src/armnn/Graph.cpp
@@ -3,16 +3,15 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "Graph.hpp"
-#include "SubgraphView.hpp"
-#include "LayersFwd.hpp"
+#include <Graph.hpp>
+#include <LayersFwd.hpp>
 
 #include <armnn/backends/IBackendInternal.hpp>
+#include <armnn/backends/SubgraphView.hpp>
 
 #include <armnn/BackendId.hpp>
 #include <armnn/Logging.hpp>
 #include <armnn/TypesUtils.hpp>
-#include <armnn/Utils.hpp>
 #include <armnn/utility/Assert.hpp>
 #include <armnn/utility/NumericCast.hpp>
 
diff --git a/src/armnn/Network.hpp b/src/armnn/Network.hpp
index a2ef0d8..1e8e4c2 100644
--- a/src/armnn/Network.hpp
+++ b/src/armnn/Network.hpp
@@ -5,23 +5,22 @@
 #pragma once
 
 #include <armnn/DescriptorsFwd.hpp>
+#include <armnn/INetwork.hpp>
 #include <armnn/LstmParams.hpp>
 #include <armnn/QuantizedLstmParams.hpp>
 #include <armnn/TensorFwd.hpp>
 #include <armnn/Types.hpp>
 
-#include <armnn/INetwork.hpp>
+#include <Graph.hpp>
+#include <Layer.hpp>
+#include <OptimizedNetworkImpl.hpp>
+#include <armnn/backends/SubgraphView.hpp>
 
 #include <string>
 #include <vector>
 #include <map>
 #include <memory>
 
-#include "Graph.hpp"
-#include "Layer.hpp"
-#include "OptimizedNetworkImpl.hpp"
-#include "SubgraphView.hpp"
-
 namespace armnn
 {
 class Graph;
diff --git a/src/armnn/SubgraphView.cpp b/src/armnn/SubgraphView.cpp
index 2de4510..aac2a35 100644
--- a/src/armnn/SubgraphView.cpp
+++ b/src/armnn/SubgraphView.cpp
@@ -3,8 +3,9 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include "SubgraphView.hpp"
-#include "Graph.hpp"
+#include <armnn/backends/SubgraphView.hpp>
+
+#include <Graph.hpp>
 
 #include <armnn/utility/IgnoreUnused.hpp>
 #include <armnn/utility/NumericCast.hpp>
diff --git a/src/armnn/SubgraphView.hpp b/src/armnn/SubgraphView.hpp
index f2ca44c..ddfd884 100644
--- a/src/armnn/SubgraphView.hpp
+++ b/src/armnn/SubgraphView.hpp
@@ -5,168 +5,7 @@
 
 #pragma once
 
-#include "Layer.hpp"
-#include "Graph.hpp"
+#include <armnn/backends/SubgraphView.hpp>
 
-#include <vector>
-#include <list>
-
-namespace armnn
-{
-
-///
-/// The SubgraphView class represents a subgraph of a Graph.
-/// The data it holds, points to data held by layers of the Graph, so the
-/// the contents of the SubgraphView become invalid when the Layers are destroyed
-/// or changed.
-///
-class SubgraphView final
-{
-public:
-    template <typename Func>
-    void ForEachLayer(Func func) const
-    {
-        for (auto it = m_Layers.begin(); it != m_Layers.end(); )
-        {
-             auto next = std::next(it);
-             func(*it);
-             it = next;
-        }
-    }
-
-    template <typename Func>
-    void ForEachIConnectableLayer(Func func) const
-    {
-        for (auto it = m_IConnectableLayers.begin(); it != m_IConnectableLayers.end(); )
-        {
-             auto next = std::next(it);
-             func(*it);
-             it = next;
-        }
-    }
-
-    using SubgraphViewPtr = std::unique_ptr<SubgraphView>;
-    using InputSlots = std::vector<InputSlot*>;
-    using IInputSlots = std::vector<IInputSlot*>;
-    using OutputSlots = std::vector<OutputSlot*>;
-    using IOutputSlots = std::vector<IOutputSlot*>;
-    using Layers = std::list<Layer*>;
-    using IConnectableLayers = std::list<IConnectableLayer*>;
-    using Iterator = Layers::iterator;
-    using IConnectableLayerIterator = IConnectableLayers::iterator;
-    using ConstIterator = Layers::const_iterator;
-    using ConstIConnectableIterator = IConnectableLayers::const_iterator;
-
-    /// Constructs a sub-graph from the entire given graph.
-    explicit SubgraphView(Graph& graph);
-
-    /// Constructs a sub-graph with the given arguments.
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use constructor with arguments: "
-                                      "IConnectableLayers, IInputSlots and IOutputSlots", "22.08")
-    SubgraphView(InputSlots&& inputs, OutputSlots&& outputs, Layers&& layers);
-
-    /// Constructs a sub-graph with the given arguments.
-    SubgraphView(IConnectableLayers&& layers, IInputSlots&& inputs, IOutputSlots&& outputs);
-
-    /// Copy-constructor.
-    SubgraphView(const SubgraphView& subgraph);
-
-    /// Move-constructor.
-    SubgraphView(SubgraphView&& subgraph);
-
-    /// Constructs a sub-graph with only the given layer.
-    SubgraphView(IConnectableLayer* layer);
-
-    /// Move-assignment operator.
-    SubgraphView& operator=(SubgraphView&& other);
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIInputSlots() returning"
-                                      " public IInputSlots", "22.08")
-    const InputSlots& GetInputSlots() const;
-    const IInputSlots& GetIInputSlots() const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIOutputSlots() returning"
-                                      " public IOutputSlots", "22.08")
-    const OutputSlots& GetOutputSlots() const;
-    const IOutputSlots& GetIOutputSlots() const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIConnectableLayers() "
-                                      "returning public IConnectableLayers", "22.08")
-    const Layers& GetLayers() const;
-    const IConnectableLayers& GetIConnectableLayers() const;
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIInputSlot() returning public "
-                                      "IInputSlot", "22.08")
-    const InputSlot* GetInputSlot(unsigned int index) const;
-    const IInputSlot* GetIInputSlot(unsigned int index) const;
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIInputSlot() returning public "
-                                      "IInputSlot", "22.08")
-    InputSlot* GetInputSlot(unsigned int index);
-    IInputSlot* GetIInputSlot(unsigned int index);
-
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIOutputSlot() returning"
-                                      " public IOutputSlot", "22.08")
-    const OutputSlot* GetOutputSlot(unsigned int index) const;
-    const IOutputSlot* GetIOutputSlot(unsigned int index) const;
-    ARMNN_DEPRECATED_MSG_REMOVAL_DATE("This function has been deprecated, please use GetIOutputSlot() returning"
-                                      " public IOutputSlot", "22.08")
-    OutputSlot* GetOutputSlot(unsigned int index);
-    IOutputSlot* GetIOutputSlot(unsigned int index);
-
-    unsigned int GetNumInputSlots() const;
-    unsigned int GetNumOutputSlots() const;
-
-    ARMNN_DEPRECATED_MSG_CHANGE_DATE("This function is deprecated and will be changed to return an "
-                                     "IConnectableLayerIterator, until that occurs in 23.02; please use "
-                                     "beginIConnectable() returning public IConnectableLayerIterator", "23.02")
-    Iterator begin();
-    IConnectableLayerIterator beginIConnectable();
-    ARMNN_DEPRECATED_MSG_CHANGE_DATE("This function is deprecated and will be changed to return an "
-                                     "IConnectableLayerIterator, until that occurs in 23.02; please use "
-                                     "endIConnectable() returning public IConnectableLayerIterator", "23.02")
-    Iterator end();
-    IConnectableLayerIterator endIConnectable();
-
-    ARMNN_DEPRECATED_MSG_CHANGE_DATE("This function is deprecated and will be changed to return an "
-                                     "ConstIConnectableIterator, until that occurs in 23.02; please use "
-                                     "beginIConnectable() returning public ConstIConnectableIterator", "23.02")
-    ConstIterator begin() const;
-    ConstIConnectableIterator beginIConnectable() const;
-    ARMNN_DEPRECATED_MSG_CHANGE_DATE("This function is deprecated and will be changed to return an "
-                                     "ConstIConnectableIterator, until that occurs in 23.02; please use "
-                                     "endIConnectable() returning public ConstIConnectableIterator", "23.02")
-    ConstIterator end() const;
-    ConstIConnectableIterator endIConnectable() const;
-
-    ARMNN_DEPRECATED_MSG_CHANGE_DATE("This function is deprecated and will be changed to return an "
-                                     "ConstIConnectableIterator, until that occurs in 23.02; please use "
-                                     "cbeginIConnectable() returning public ConstIConnectableIterator", "23.02")
-    ConstIterator cbegin() const;
-    ConstIConnectableIterator cbeginIConnectable() const;
-    ARMNN_DEPRECATED_MSG_CHANGE_DATE("This function is deprecated and will be changed to return an "
-                                     "ConstIConnectableIterator, until that occurs in 23.02; please use "
-                                     "cendIConnectable() returning public ConstIConnectableIterator", "23.02")
-    ConstIterator cend() const;
-    ConstIConnectableIterator cendIConnectable() const;
-
-    void Clear();
-
-private:
-    void CheckSubgraph();
-
-    /// Arrange the order of layers topologically so that nodes can be visited in valid order
-    void ArrangeBySortOrder();
-
-    /// The list of pointers to the input slots of the parent graph.
-    InputSlots m_InputSlots;
-    IInputSlots m_IInputSlots;
-
-    /// The list of pointers to the output slots of the parent graph.
-    OutputSlots m_OutputSlots;
-    IOutputSlots m_IOutputSlots;
-
-    /// The list of pointers to the layers of the parent graph.
-    Layers m_Layers;
-    IConnectableLayers m_IConnectableLayers;
-};
-} // namespace armnn
+#pragma message("src/armnn/SubgraphView.hpp has been deprecated, it is due for removal in" \
+                " 22.08 release. Please use include/armnn/backends/SubgraphView.hpp instead.")
diff --git a/src/armnn/SubgraphViewSelector.hpp b/src/armnn/SubgraphViewSelector.hpp
index d4ed8f7..0a05bc2 100644
--- a/src/armnn/SubgraphViewSelector.hpp
+++ b/src/armnn/SubgraphViewSelector.hpp
@@ -4,7 +4,7 @@
 //
 #pragma once
 
-#include "SubgraphView.hpp"
+#include <armnn/backends/SubgraphView.hpp>
 #include <functional>
 #include <memory>
 
diff --git a/src/armnn/test/SubgraphViewTests.cpp b/src/armnn/test/SubgraphViewTests.cpp
index 2ea465e..14c18ee 100644
--- a/src/armnn/test/SubgraphViewTests.cpp
+++ b/src/armnn/test/SubgraphViewTests.cpp
@@ -3,15 +3,15 @@
 // SPDX-License-Identifier: MIT
 //
 
-#include <doctest/doctest.h>
-
 #include <Graph.hpp>
-#include <SubgraphView.hpp>
 #include <SubgraphViewSelector.hpp>
 
+#include <armnn/backends/SubgraphView.hpp>
+#include <armnn/backends/TensorHandle.hpp>
 #include <armnn/utility/NumericCast.hpp>
 
-#include <armnn/backends/TensorHandle.hpp>
+#include <doctest/doctest.h>
+
 #include <fstream>
 #include <map>
 #include <queue>
diff --git a/src/armnnTestUtils/CommonTestUtils.hpp b/src/armnnTestUtils/CommonTestUtils.hpp
index 3fadc88..b75a32b 100644
--- a/src/armnnTestUtils/CommonTestUtils.hpp
+++ b/src/armnnTestUtils/CommonTestUtils.hpp
@@ -8,12 +8,12 @@
 #include "TestUtils.hpp"
 
 #include <Graph.hpp>
-#include <SubgraphView.hpp>
-#include <SubgraphViewSelector.hpp>
 #include <ResolveType.hpp>
+#include <SubgraphViewSelector.hpp>
 
 #include <armnn/BackendRegistry.hpp>
 #include <armnn/Types.hpp>
+#include <armnn/backends/SubgraphView.hpp>
 #include <armnn/backends/TensorHandle.hpp>
 
 #include <algorithm>
diff --git a/src/backends/backendsCommon/test/OptimizationViewsTests.cpp b/src/backends/backendsCommon/test/OptimizationViewsTests.cpp
index 8e51a52..a551dfc 100644
--- a/src/backends/backendsCommon/test/OptimizationViewsTests.cpp
+++ b/src/backends/backendsCommon/test/OptimizationViewsTests.cpp
@@ -7,13 +7,14 @@
 #include <CommonTestUtils.hpp>
 #include "MockBackend.hpp"
 
-#include <armnn/backends/OptimizationViews.hpp>
-#include <armnn/utility/PolymorphicDowncast.hpp>
 #include <Graph.hpp>
 #include <Network.hpp>
-#include <SubgraphView.hpp>
 #include <SubgraphViewSelector.hpp>
 
+#include <armnn/backends/OptimizationViews.hpp>
+#include <armnn/backends/SubgraphView.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
+
 #include <doctest/doctest.h>
 
 using namespace armnn;