/* * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @file OperationPass.h * @brief This file contains OperationPass class */ #ifndef __NEURUN_GRAPH_PASS_OPERATION_PASS_H__ #define __NEURUN_GRAPH_PASS_OPERATION_PASS_H__ #include "Pass.h" #include "model/operation/Index.h" #include "model/operation/Node.h" namespace neurun { namespace graph { namespace pass { /** * @brief Class to iterate over operations and calls callback() method */ class OperationPass : public Pass { public: using Pass::Pass; public: /** * @brief Returns string id for this pass. Same with class name. * * @return string id */ virtual std::string id() = 0; /** * @brief Run the pass */ virtual void run() override final; /** * @brief The function that will be executed for each operations * * @param i[in] Index of the operation node * @param n[in] The operation node */ virtual void callback(const model::operation::Index &i, model::operation::Node &n) = 0; }; } // namespace pass } // namespace graph } // namespace neurun #endif // __NEURUN_GRAPH_PASS_OPERATION_PASS_H__