14#include <mlir/TableGen/AttrOrTypeDef.h>
15#include <mlir/TableGen/GenInfo.h>
17#include <llvm/Support/CommandLine.h>
18#include <llvm/Support/FormatVariadic.h>
19#include <llvm/TableGen/Record.h>
20#include <llvm/TableGen/TableGenBackend.h>
26using namespace mlir::tblgen;
29static bool emitAttrCAPIHeader(
const llvm::RecordKeeper &records, raw_ostream &os) {
30 emitSourceFileHeader(
"Attr C API Declarations", os, records);
33 generator.genPrologue();
35 for (
const auto *def : records.getAllDerivedDefinitions(
"AttrDef")) {
36 const AttrOrTypeDef attr(def);
37 generator.genCompleteRecord(attr);
40 generator.genEpilogue();
45static bool emitAttrCAPIImpl(
const llvm::RecordKeeper &records, raw_ostream &os) {
46 emitSourceFileHeader(
"Attr C API Implementations", os, records);
49 generator.genPrologue();
51 for (
const auto *def : records.getAllDerivedDefinitions(
"AttrDef")) {
52 const AttrOrTypeDef attr(def);
53 generator.genCompleteRecord(attr);
59static mlir::GenRegistration genAttrCAPIHeader(
60 "gen-attr-capi-header",
"Generate attribute C API header declarations", &emitAttrCAPIHeader
63static mlir::GenRegistration genAttrCAPIImpl(
64 "gen-attr-capi-impl",
"Generate attribute C API implementations", &emitAttrCAPIImpl
Generator for attribute/type C implementation files.