Imported Upstream version 1.25.0
[platform/core/ml/nnfw.git] / runtime / onert / core / src / compiler / pass / OperationPass.h
1 /*
2  * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /**
18  * @file  OperationPass.h
19  * @brief This file contains OperationPass class
20  */
21
22 #ifndef __ONERT_COMPILER_PASS_OPERATION_PASS_H__
23 #define __ONERT_COMPILER_PASS_OPERATION_PASS_H__
24
25 #include "Pass.h"
26 #include "ir/Index.h"
27
28 namespace onert
29 {
30 namespace ir
31 {
32 struct IOperation;
33 } // namespace ir
34 } // namespace onert
35
36 namespace onert
37 {
38 namespace compiler
39 {
40 namespace pass
41 {
42
43 /**
44  * @brief  Class to iterate over operations and calls callback() method
45  */
46 class OperationPass : public Pass
47 {
48 public:
49   using Pass::Pass;
50   virtual ~OperationPass() = default;
51
52 public:
53   /**
54    * @brief Returns string id for this pass. Same with class name.
55    *
56    * @return string id
57    */
58   std::string id() override = 0;
59
60   /**
61    * @brief Be called for all nodes of graph.
62    * @param index is the index of a node in graph
63    * @param node is the node in graph
64    */
65   virtual void callback(const ir::OperationIndex &index, ir::IOperation &node) = 0;
66
67   /**
68    * @brief Run the pass
69    */
70   void run() final;
71 };
72
73 } // namespace pass
74 } // namespace compiler
75 } // namespace onert
76
77 #endif // __ONERT_COMPILER_PASS_OPERATION_PASS_H__