Move TableGen's parser and entry point into a library
[oota-llvm.git] / utils / TableGen / ClangAttrEmitter.h
1 //===- 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
19 namespace llvm {
20
21 /// ClangAttrClassEmitter - class emits the class defintions for attributes for
22 ///   clang.
23 class 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.
36 class 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.
49 class 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.
62 class ClangAttrPCHReadEmitter : public TableGenBackend {
63   RecordKeeper &Records;
64
65 public:
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.
75 class ClangAttrPCHWriteEmitter : public TableGenBackend {
76   RecordKeeper &Records;
77
78 public:
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.
88 class 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.
101 class 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
112 }
113
114 #endif