//===- SkeletonEmitter.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 "skeleton-emitter" namespace llvm { class RecordKeeper; class raw_ostream; } // namespace llvm using namespace llvm; namespace { // Any helper data structures can be defined here. Some backends use // structs to collect information from the records. class SkeletonEmitter { private: RecordKeeper &Records; public: SkeletonEmitter(RecordKeeper &RK) : Records(RK) {} void run(raw_ostream &OS); }; // emitter class } // anonymous namespace void SkeletonEmitter::run(raw_ostream &OS) { emitSourceFileHeader("Skeleton data structures", OS); (void)Records; // To suppress unused variable warning; remove on use. } // Choose either option A or B. //===----------------------------------------------------------------------===// // Option A: Register the backed as class static TableGen::Emitter::OptClass X("gen-skeleton-class", "Generate example skeleton class"); //===----------------------------------------------------------------------===// // Option B: Register "EmitSkeleton" directly // The emitter entry may be private scope. static void EmitSkeleton(RecordKeeper &RK, raw_ostream &OS) { // Instantiate the emitter class and invoke run(). SkeletonEmitter(RK).run(OS); } static TableGen::Emitter::Opt Y("gen-skeleton-entry", EmitSkeleton, "Generate example skeleton entry");