1
+ // ===- DirectiveEmitter.h - Directive Language Emitter ----------*- 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
+ // DirectiveEmitter uses the descriptions of directives and clauses to construct
10
+ // common code declarations to be used in Frontends.
11
+ //
12
+ // ===----------------------------------------------------------------------===//
13
+
1
14
#ifndef LLVM_TABLEGEN_DIRECTIVEEMITTER_H
2
15
#define LLVM_TABLEGEN_DIRECTIVEEMITTER_H
3
16
@@ -15,8 +28,7 @@ namespace llvm {
15
28
// DirectiveBase.td and provides helper methods for accessing it.
16
29
class DirectiveLanguage {
17
30
public:
18
- explicit DirectiveLanguage (const llvm::RecordKeeper &Records)
19
- : Records(Records) {
31
+ explicit DirectiveLanguage (const RecordKeeper &Records) : Records(Records) {
20
32
const auto &DirectiveLanguages = getDirectiveLanguages ();
21
33
Def = DirectiveLanguages[0 ];
22
34
}
@@ -70,8 +82,8 @@ class DirectiveLanguage {
70
82
bool HasValidityErrors () const ;
71
83
72
84
private:
73
- const llvm:: Record *Def;
74
- const llvm:: RecordKeeper &Records;
85
+ const Record *Def;
86
+ const RecordKeeper &Records;
75
87
76
88
ArrayRef<const Record *> getDirectiveLanguages () const {
77
89
return Records.getAllDerivedDefinitions (" DirectiveLanguage" );
@@ -82,7 +94,7 @@ class DirectiveLanguage {
82
94
// DirectiveBase.td.
83
95
class BaseRecord {
84
96
public:
85
- explicit BaseRecord (const llvm:: Record *Def) : Def(Def) {}
97
+ explicit BaseRecord (const Record *Def) : Def(Def) {}
86
98
87
99
StringRef getName () const { return Def->getValueAsString (" name" ); }
88
100
@@ -105,14 +117,14 @@ class BaseRecord {
105
117
StringRef getRecordName () const { return Def->getName (); }
106
118
107
119
protected:
108
- const llvm:: Record *Def;
120
+ const Record *Def;
109
121
};
110
122
111
123
// Wrapper class that contains a Directive's information defined in
112
124
// DirectiveBase.td and provides helper methods for accessing it.
113
125
class Directive : public BaseRecord {
114
126
public:
115
- explicit Directive (const llvm:: Record *Def) : BaseRecord(Def) {}
127
+ explicit Directive (const Record *Def) : BaseRecord(Def) {}
116
128
117
129
std::vector<Record *> getAllowedClauses () const {
118
130
return Def->getValueAsListOfDefs (" allowedClauses" );
@@ -143,7 +155,7 @@ class Directive : public BaseRecord {
143
155
// and provides helper methods for accessing it.
144
156
class Clause : public BaseRecord {
145
157
public:
146
- explicit Clause (const llvm:: Record *Def) : BaseRecord(Def) {}
158
+ explicit Clause (const Record *Def) : BaseRecord(Def) {}
147
159
148
160
// Optional field.
149
161
StringRef getClangClass () const {
@@ -166,14 +178,14 @@ class Clause : public BaseRecord {
166
178
bool Cap = true ;
167
179
std::transform (N.begin (), N.end (), N.begin (), [&Cap](unsigned char C) {
168
180
if (Cap == true ) {
169
- C = llvm:: toUpper (C);
181
+ C = toUpper (C);
170
182
Cap = false ;
171
183
} else if (C == ' _' ) {
172
184
Cap = true ;
173
185
}
174
186
return C;
175
187
});
176
- llvm:: erase (N, ' _' );
188
+ erase (N, ' _' );
177
189
return N;
178
190
}
179
191
@@ -211,7 +223,7 @@ class Clause : public BaseRecord {
211
223
// DirectiveBase.td and provides helper methods for accessing it.
212
224
class VersionedClause {
213
225
public:
214
- explicit VersionedClause (const llvm:: Record *Def) : Def(Def) {}
226
+ explicit VersionedClause (const Record *Def) : Def(Def) {}
215
227
216
228
// Return the specific clause record wrapped in the Clause class.
217
229
Clause getClause () const { return Clause{Def->getValueAsDef (" clause" )}; }
@@ -221,12 +233,12 @@ class VersionedClause {
221
233
int64_t getMaxVersion () const { return Def->getValueAsInt (" maxVersion" ); }
222
234
223
235
private:
224
- const llvm:: Record *Def;
236
+ const Record *Def;
225
237
};
226
238
227
239
class ClauseVal : public BaseRecord {
228
240
public:
229
- explicit ClauseVal (const llvm:: Record *Def) : BaseRecord(Def) {}
241
+ explicit ClauseVal (const Record *Def) : BaseRecord(Def) {}
230
242
231
243
int getValue () const { return Def->getValueAsInt (" value" ); }
232
244
@@ -235,4 +247,4 @@ class ClauseVal : public BaseRecord {
235
247
236
248
} // namespace llvm
237
249
238
- #endif
250
+ #endif // LLVM_TABLEGEN_DIRECTIVEEMITTER_H
0 commit comments