brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 60fa183 Raw
43 lines · cpp
1//===- OpClass.cpp - Implementation of an Op Class ------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "OpClass.h"10 11using namespace mlir;12using namespace mlir::tblgen;13 14//===----------------------------------------------------------------------===//15// OpClass definitions16//===----------------------------------------------------------------------===//17 18OpClass::OpClass(StringRef name, std::string extraClassDeclaration,19                 std::string extraClassDefinition)20    : Class(name.str()),21      extraClassDeclaration(std::move(extraClassDeclaration)),22      extraClassDefinition(std::move(extraClassDefinition)),23      parent(addParent("::mlir::Op")) {24  parent.addTemplateParam(getClassName().str());25  declare<VisibilityDeclaration>(Visibility::Public);26  /// Inherit functions from Op.27  declare<UsingDeclaration>("Op::Op");28  declare<UsingDeclaration>("Op::print");29  /// Type alias for the adaptor class.30  declare<UsingDeclaration>("Adaptor", className + "Adaptor");31  declare<UsingDeclaration>("GenericAdaptor",32                            className + "GenericAdaptor<RangeT>")33      ->addTemplateParam("RangeT");34  declare<UsingDeclaration>(35      "FoldAdaptor", "GenericAdaptor<::llvm::ArrayRef<::mlir::Attribute>>");36}37 38void OpClass::finalize() {39  Class::finalize();40  declare<VisibilityDeclaration>(Visibility::Public);41  declare<ExtraClassDeclaration>(extraClassDeclaration, extraClassDefinition);42}43