brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · a7c4a89 Raw
65 lines · cpp
1//===- TableGenBackendSkeleton.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-exception6//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 18namespace llvm {19class RecordKeeper;20class raw_ostream;21} // namespace llvm22 23using namespace llvm;24 25namespace {26 27// Any helper data structures can be defined here. Some backends use28// structs to collect information from the records.29 30class SkeletonEmitter {31private:32  const RecordKeeper &Records;33 34public:35  SkeletonEmitter(const RecordKeeper &RK) : Records(RK) {}36 37  void run(raw_ostream &OS);38}; // emitter class39 40} // anonymous namespace41 42void 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>52static TableGen::Emitter::OptClass<SkeletonEmitter>53    X("gen-skeleton-class", "Generate example skeleton class");54 55//===----------------------------------------------------------------------===//56// Option B: Register "EmitSkeleton" directly57// The emitter entry may be private scope.58static void EmitSkeleton(const RecordKeeper &RK, raw_ostream &OS) {59  // Instantiate the emitter class and invoke run().60  SkeletonEmitter(RK).run(OS);61}62 63static TableGen::Emitter::Opt Y("gen-skeleton-entry", EmitSkeleton,64                                "Generate example skeleton entry");65