//===- TableGenBackendSkeleton.cpp - Skeleton TableGen backend --*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This Tablegen backend emits ... // //===----------------------------------------------------------------------===// #include "llvm/ADT/StringRef.h" #include "llvm/TableGen/TableGenBackend.h" #define DEBUG_TYPE … namespace llvm { class RecordKeeper; class raw_ostream; } // namespace llvm usingnamespacellvm; namespace { // Any helper data structures can be defined here. Some backends use // structs to collect information from the records. class SkeletonEmitter { … }; // emitter class } // anonymous namespace void SkeletonEmitter::run(raw_ostream &OS) { … } // Choose either option A or B. //===----------------------------------------------------------------------===// // Option A: Register the backed as class <SkeletonEmitter> static TableGen::Emitter::OptClass<SkeletonEmitter> X("gen-skeleton-class", "Generate example skeleton class"); //===----------------------------------------------------------------------===// // Option B: Register "EmitSkeleton" directly // The emitter entry may be private scope. static void EmitSkeleton(const RecordKeeper &RK, raw_ostream &OS) { … } static TableGen::Emitter::Opt Y("gen-skeleton-entry", EmitSkeleton, "Generate example skeleton entry");