Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/TableGen/TableGenBackendSkeleton.cpp
35234 views
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
66