// Copyright (C) 2018-2025 Intel Corporation // SPDX-License-Identifier: Apache-2.0 // #pragma once #include "openvino/frontend/extension/op.hpp" #include "openvino/frontend/onnx/extension/conversion.hpp" namespace ov { namespace frontend { namespace onnx { template class OpExtension : public ConversionExtension { public: OpExtension(const std::map& attr_names_map = {}, const std::map& attr_values_map = {}) : OpExtension(OVOpType::get_type_info_static().name, "", attr_names_map, attr_values_map) {} OpExtension(const std::string& fw_type_name, const std::map& attr_names_map = {}, const std::map& attr_values_map = {}) : OpExtension(fw_type_name, "", attr_names_map, attr_values_map) {} OpExtension(const std::string& fw_type_name, const std::string& fw_domain, const std::map& attr_names_map = {}, const std::map& attr_values_map = {}) : ConversionExtension(fw_type_name, fw_domain, OpConversionFunction( []() { return std::make_shared(); }, attr_names_map, attr_values_map)) {} }; template <> class OpExtension : public ConversionExtension { public: OpExtension() = delete; explicit OpExtension(const std::string& fw_ov_type_name, const std::map& attr_names_map = {}, const std::map& attr_values_map = {}) : OpExtension(fw_ov_type_name, fw_ov_type_name, attr_names_map, attr_values_map) {} OpExtension(const std::string& ov_type_name, const std::string& fw_type_name, const std::map& attr_names_map = {}, const std::map& attr_values_map = {}) : OpExtension(ov_type_name, fw_type_name, "", attr_names_map, attr_values_map) {} OpExtension(const std::string& ov_type_name, const std::string& fw_type_name, const std::string& fw_domain_name, const std::map& attr_names_map = {}, const std::map& attr_values_map = {}) : ConversionExtension(fw_type_name, fw_domain_name, OpConversionFunction( [ov_type_name]() { return create_ov_node_by_name(ov_type_name); }, attr_names_map, attr_values_map)) {} }; } // namespace onnx } // namespace frontend } // namespace ov