1 //===- SkeletonEmitter.cpp - Skeleton TableGen backend -*- C++ -*-===// 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-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // This Tablegen backend emits ... 10 // 11 //===----------------------------------------------------------------------===// 12 13 #include "llvm/ADT/StringRef.h" 14 #include "llvm/TableGen/TableGenBackend.h" 15 16 #define DEBUG_TYPE "skeleton-emitter" 17 18 namespace llvm { 19 class RecordKeeper; 20 class raw_ostream; 21 } // namespace llvm 22 23 using namespace llvm; 24 25 namespace { 26 27 // Any helper data structures can be defined here. Some backends use 28 // structs to collect information from the records. 29 30 class SkeletonEmitter { 31 private: 32 RecordKeeper &Records; 33 34 public: 35 SkeletonEmitter(RecordKeeper &RK) : Records(RK) {} 36 37 void run(raw_ostream &OS); 38 }; // emitter class 39 40 } // anonymous namespace 41 42 void SkeletonEmitter::run(raw_ostream &OS) { 43 emitSourceFileHeader("Skeleton data structures", OS); 44 45 (void)Records; // To suppress unused variable warning; remove on use. 46 } 47 48 // Choose either option A or B. 49 50 //===----------------------------------------------------------------------===// 51 // Option A: Register the backed as class <SkeletonEmitter> 52 static TableGen::Emitter::OptClass<SkeletonEmitter> 53 X("gen-skeleton-class", "Generate example skeleton class"); 54 55 //===----------------------------------------------------------------------===// 56 // Option B: Register "EmitSkeleton" directly 57 // The emitter entry may be private scope. 58 static void EmitSkeleton(RecordKeeper &RK, raw_ostream &OS) { 59 // Instantiate the emitter class and invoke run(). 60 SkeletonEmitter(RK).run(OS); 61 } 62 63 static TableGen::Emitter::Opt Y("gen-skeleton-entry", EmitSkeleton, 64 "Generate example skeleton entry"); 65