summaryrefslogtreecommitdiff
path: root/clang/utils/TableGen/ClangAttrEmitter.h
blob: d119a094c177c90a18dbc97deda10a47963aefc3 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
//===- ClangAttrEmitter.h - Generate Clang attribute handling =-*- C++ -*--===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// These tablegen backends emit Clang attribute processing code
//
//===----------------------------------------------------------------------===//

#ifndef CLANGATTR_EMITTER_H
#define CLANGATTR_EMITTER_H

#include "llvm/TableGen/TableGenBackend.h"

namespace llvm {

/// ClangAttrClassEmitter - class emits the class defintions for attributes for
///   clang.
class ClangAttrClassEmitter : public TableGenBackend {
  RecordKeeper &Records;
 
 public:
  explicit ClangAttrClassEmitter(RecordKeeper &R)
    : Records(R)
    {}

  void run(raw_ostream &OS);
};

/// ClangAttrImplEmitter - class emits the class method defintions for
///   attributes for clang.
class ClangAttrImplEmitter : public TableGenBackend {
  RecordKeeper &Records;
 
 public:
  explicit ClangAttrImplEmitter(RecordKeeper &R)
    : Records(R)
    {}

  void run(raw_ostream &OS);
};

/// ClangAttrListEmitter - class emits the enumeration list for attributes for
///   clang.
class ClangAttrListEmitter : public TableGenBackend {
  RecordKeeper &Records;

 public:
  explicit ClangAttrListEmitter(RecordKeeper &R)
    : Records(R)
    {}

  void run(raw_ostream &OS);
};

/// ClangAttrPCHReadEmitter - class emits the code to read an attribute from
///   a clang precompiled header.
class ClangAttrPCHReadEmitter : public TableGenBackend {
  RecordKeeper &Records;

public:
  explicit ClangAttrPCHReadEmitter(RecordKeeper &R)
    : Records(R)
    {}

  void run(raw_ostream &OS);
};

/// ClangAttrPCHWriteEmitter - class emits the code to read an attribute from
///   a clang precompiled header.
class ClangAttrPCHWriteEmitter : public TableGenBackend {
  RecordKeeper &Records;

public:
  explicit ClangAttrPCHWriteEmitter(RecordKeeper &R)
    : Records(R)
    {}

  void run(raw_ostream &OS);
};

/// ClangAttrSpellingListEmitter - class emits the list of spellings for attributes for
///   clang.
class ClangAttrSpellingListEmitter : public TableGenBackend {
  RecordKeeper &Records;

 public:
  explicit ClangAttrSpellingListEmitter(RecordKeeper &R)
    : Records(R)
    {}

  void run(raw_ostream &OS);
};

/// ClangAttrLateParsedListEmitter emits the LateParsed property for attributes
/// for clang.
class ClangAttrLateParsedListEmitter : public TableGenBackend {
  RecordKeeper &Records;

 public:
  explicit ClangAttrLateParsedListEmitter(RecordKeeper &R)
    : Records(R)
    {}

  void run(raw_ostream &OS);
};

/// ClangAttrTemplateInstantiateEmitter emits code to instantiate dependent
/// attributes on templates.
class ClangAttrTemplateInstantiateEmitter : public TableGenBackend {
  RecordKeeper &Records;

 public:
  explicit ClangAttrTemplateInstantiateEmitter(RecordKeeper &R)
    : Records(R)
    {}

  void run(raw_ostream &OS);
};

/// ClangAttrParsedAttrListEmitter emits the list of parsed attributes
/// for clang.
class ClangAttrParsedAttrListEmitter : public TableGenBackend {
  RecordKeeper &Records;

public:
  explicit ClangAttrParsedAttrListEmitter(RecordKeeper &R)
    : Records(R)
    {}

  void run(raw_ostream &OS);
};

/// ClangAttrParsedAttrKindsEmitter emits the kind list of parsed attributes
/// for clang.
class ClangAttrParsedAttrKindsEmitter : public TableGenBackend {
  RecordKeeper &Records;

public:
  explicit ClangAttrParsedAttrKindsEmitter(RecordKeeper &R)
    : Records(R)
    {}

  void run(raw_ostream &OS);
};

}

#endif