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 emitTypeCAPIHeader(
const llvm::RecordKeeper &records, raw_ostream &os) {
30 emitSourceFileHeader(
"Type C API Declarations", os, records);
33 generator.genPrologue();
35 for (
const auto *def : records.getAllDerivedDefinitions(
"TypeDef")) {
36 const AttrOrTypeDef type(def);
37 generator.genCompleteRecord(type);
40 generator.genEpilogue();
45static bool emitTypeCAPIImpl(
const llvm::RecordKeeper &records, raw_ostream &os) {
46 emitSourceFileHeader(
"Type C API Implementations", os, records);
49 generator.genPrologue();
51 for (
const auto *def : records.getAllDerivedDefinitions(
"TypeDef")) {
52 const AttrOrTypeDef type(def);
53 generator.genCompleteRecord(type);
59static mlir::GenRegistration genTypeCAPIHeader(
60 "gen-type-capi-header",
"Generate type C API header declarations", &emitTypeCAPIHeader
63static mlir::GenRegistration
64 genTypeCAPIImpl(
"gen-type-capi-impl",
"Generate type C API implementations", &emitTypeCAPIImpl);
Generator for attribute/type C implementation files.