]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/include/clang/Basic/DeclNodes.td
Merge OpenSSL 0.9.8q into head.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / clang / include / clang / Basic / DeclNodes.td
1 class AttrSubject;
2
3 class Decl<bit abstract = 0> : AttrSubject {
4   bit Abstract = abstract;
5 }
6
7 class DDecl<Decl base, bit abstract = 0> : Decl<abstract> {
8   Decl Base = base;
9 }
10
11 class DeclContext { }
12
13 def TranslationUnit : Decl, DeclContext;
14 def Named : Decl<1>;
15   def Namespace : DDecl<Named>, DeclContext;
16   def UsingDirective : DDecl<Named>;
17   def NamespaceAlias : DDecl<Named>;
18   def Type : DDecl<Named, 1>;
19     def Typedef : DDecl<Type>;
20     def UnresolvedUsingTypename : DDecl<Type>;
21     def Tag : DDecl<Type, 1>, DeclContext;
22       def Enum : DDecl<Tag>;
23       def Record : DDecl<Tag>;
24         def CXXRecord : DDecl<Record>;
25           def ClassTemplateSpecialization : DDecl<CXXRecord>;
26             def ClassTemplatePartialSpecialization
27               : DDecl<ClassTemplateSpecialization>;
28     def TemplateTypeParm : DDecl<Type>;
29   def Value : DDecl<Named, 1>;
30     def EnumConstant : DDecl<Value>;
31     def UnresolvedUsingValue : DDecl<Value>;
32     def Declarator : DDecl<Value, 1>;
33       def Function : DDecl<Declarator>, DeclContext;
34         def CXXMethod : DDecl<Function>;
35           def CXXConstructor : DDecl<CXXMethod>;
36           def CXXDestructor : DDecl<CXXMethod>;
37           def CXXConversion : DDecl<CXXMethod>;
38       def Field : DDecl<Declarator>;
39         def ObjCIvar : DDecl<Field>;
40         def ObjCAtDefsField : DDecl<Field>;
41       def Var : DDecl<Declarator>;
42         def ImplicitParam : DDecl<Var>;
43         def ParmVar : DDecl<Var>;
44         def NonTypeTemplateParm : DDecl<Var>;
45   def Template : DDecl<Named, 1>;
46     def RedeclarableTemplate : DDecl<Template, 1>;
47       def FunctionTemplate : DDecl<RedeclarableTemplate>;
48       def ClassTemplate : DDecl<RedeclarableTemplate>;
49     def TemplateTemplateParm : DDecl<Template>;
50   def Using : DDecl<Named>;
51   def UsingShadow : DDecl<Named>;
52   def ObjCMethod : DDecl<Named>, DeclContext;
53   def ObjCContainer : DDecl<Named, 1>, DeclContext;
54     def ObjCCategory : DDecl<ObjCContainer>;
55     def ObjCProtocol : DDecl<ObjCContainer>;
56     def ObjCInterface : DDecl<ObjCContainer>;
57     def ObjCImpl : DDecl<ObjCContainer, 1>;
58       def ObjCCategoryImpl : DDecl<ObjCImpl>;
59       def ObjCImplementation : DDecl<ObjCImpl>;
60   def ObjCProperty : DDecl<Named>;
61   def ObjCCompatibleAlias : DDecl<Named>;
62 def LinkageSpec : Decl, DeclContext;
63 def ObjCPropertyImpl : Decl;
64 def ObjCForwardProtocol : Decl;
65 def ObjCClass : Decl;
66 def FileScopeAsm : Decl;
67 def AccessSpec : Decl;
68 def Friend : Decl;
69 def FriendTemplate : Decl;
70 def StaticAssert : Decl;
71 def Block : Decl, DeclContext;