blob: d119a094c177c90a18dbc97deda10a47963aefc3 [file] [log] [blame]
Peter Collingbourne51d77772011-10-06 13:03:08 +00001//===- ClangAttrEmitter.h - Generate Clang attribute handling =-*- C++ -*--===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// These tablegen backends emit Clang attribute processing code
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef CLANGATTR_EMITTER_H
15#define CLANGATTR_EMITTER_H
16
17#include "llvm/TableGen/TableGenBackend.h"
18
19namespace llvm {
20
21/// ClangAttrClassEmitter - class emits the class defintions for attributes for
22/// clang.
23class ClangAttrClassEmitter : public TableGenBackend {
24 RecordKeeper &Records;
25
26 public:
27 explicit ClangAttrClassEmitter(RecordKeeper &R)
28 : Records(R)
29 {}
30
31 void run(raw_ostream &OS);
32};
33
34/// ClangAttrImplEmitter - class emits the class method defintions for
35/// attributes for clang.
36class ClangAttrImplEmitter : public TableGenBackend {
37 RecordKeeper &Records;
38
39 public:
40 explicit ClangAttrImplEmitter(RecordKeeper &R)
41 : Records(R)
42 {}
43
44 void run(raw_ostream &OS);
45};
46
47/// ClangAttrListEmitter - class emits the enumeration list for attributes for
48/// clang.
49class ClangAttrListEmitter : public TableGenBackend {
50 RecordKeeper &Records;
51
52 public:
53 explicit ClangAttrListEmitter(RecordKeeper &R)
54 : Records(R)
55 {}
56
57 void run(raw_ostream &OS);
58};
59
60/// ClangAttrPCHReadEmitter - class emits the code to read an attribute from
61/// a clang precompiled header.
62class ClangAttrPCHReadEmitter : public TableGenBackend {
63 RecordKeeper &Records;
64
65public:
66 explicit ClangAttrPCHReadEmitter(RecordKeeper &R)
67 : Records(R)
68 {}
69
70 void run(raw_ostream &OS);
71};
72
73/// ClangAttrPCHWriteEmitter - class emits the code to read an attribute from
74/// a clang precompiled header.
75class ClangAttrPCHWriteEmitter : public TableGenBackend {
76 RecordKeeper &Records;
77
78public:
79 explicit ClangAttrPCHWriteEmitter(RecordKeeper &R)
80 : Records(R)
81 {}
82
83 void run(raw_ostream &OS);
84};
85
86/// ClangAttrSpellingListEmitter - class emits the list of spellings for attributes for
87/// clang.
88class ClangAttrSpellingListEmitter : public TableGenBackend {
89 RecordKeeper &Records;
90
91 public:
92 explicit ClangAttrSpellingListEmitter(RecordKeeper &R)
93 : Records(R)
94 {}
95
96 void run(raw_ostream &OS);
97};
98
99/// ClangAttrLateParsedListEmitter emits the LateParsed property for attributes
100/// for clang.
101class ClangAttrLateParsedListEmitter : public TableGenBackend {
102 RecordKeeper &Records;
103
104 public:
105 explicit ClangAttrLateParsedListEmitter(RecordKeeper &R)
106 : Records(R)
107 {}
108
109 void run(raw_ostream &OS);
110};
111
DeLesley Hutchins7b9ff0c2012-01-20 22:37:06 +0000112/// ClangAttrTemplateInstantiateEmitter emits code to instantiate dependent
113/// attributes on templates.
114class ClangAttrTemplateInstantiateEmitter : public TableGenBackend {
115 RecordKeeper &Records;
116
117 public:
118 explicit ClangAttrTemplateInstantiateEmitter(RecordKeeper &R)
119 : Records(R)
120 {}
121
122 void run(raw_ostream &OS);
123};
124
Michael Hane53ac8a2012-03-07 00:12:16 +0000125/// ClangAttrParsedAttrListEmitter emits the list of parsed attributes
126/// for clang.
127class ClangAttrParsedAttrListEmitter : public TableGenBackend {
128 RecordKeeper &Records;
129
130public:
131 explicit ClangAttrParsedAttrListEmitter(RecordKeeper &R)
132 : Records(R)
133 {}
134
135 void run(raw_ostream &OS);
136};
137
138/// ClangAttrParsedAttrKindsEmitter emits the kind list of parsed attributes
139/// for clang.
140class ClangAttrParsedAttrKindsEmitter : public TableGenBackend {
141 RecordKeeper &Records;
142
143public:
144 explicit ClangAttrParsedAttrKindsEmitter(RecordKeeper &R)
145 : Records(R)
146 {}
147
148 void run(raw_ostream &OS);
149};
150
Peter Collingbourne51d77772011-10-06 13:03:08 +0000151}
152
153#endif