aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/SubgraphViewSelector.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/armnn/SubgraphViewSelector.hpp')
-rw-r--r--src/armnn/SubgraphViewSelector.hpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/armnn/SubgraphViewSelector.hpp b/src/armnn/SubgraphViewSelector.hpp
new file mode 100644
index 0000000000..9d881faa7c
--- /dev/null
+++ b/src/armnn/SubgraphViewSelector.hpp
@@ -0,0 +1,38 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+#include "SubgraphView.hpp"
+#include <functional>
+#include <memory>
+
+namespace armnn
+{
+
+class Layer;
+class Graph;
+
+class SubgraphViewSelector final
+{
+public:
+ using SubgraphViewPtr = std::unique_ptr<SubgraphView>;
+ using Subgraphs = std::vector<SubgraphViewPtr>;
+ using LayerSelectorFunction = std::function<bool(const Layer&)>;
+
+ /// Selects subgraphs from a graph based on the selector function and the algorithm.
+ /// Since the Subgraphs object returns modifiable pointers to the input and output slots of the graph:
+ /// 1) the graph/sub-graph cannot be const
+ /// 2) the caller needs to make sure that the Subgraphs lifetime is shorter than the parent graph's
+ static Subgraphs SelectSubgraphs(Graph& graph, const LayerSelectorFunction& selector);
+ static Subgraphs SelectSubgraphs(SubgraphView& subgraph, const LayerSelectorFunction& selector);
+
+private:
+ // this is a utility class, don't construct or copy
+ SubgraphViewSelector() = delete;
+ SubgraphViewSelector(const SubgraphViewSelector&) = delete;
+ SubgraphViewSelector & operator=(const SubgraphViewSelector&) = delete;
+};
+
+} // namespace armnn