annotate dmd/attrib.h @ 1650:40bd4a0d4870

Update to work with LLVM 2.7. Removed use of dyn_cast, llvm no compiles without exceptions and rtti by default. We do need exceptions for the libconfig stuff, but rtti isn't necessary (anymore). Debug info needs to be rewritten, as in LLVM 2.7 the format has completely changed. To have something to look at while rewriting, the old code has been wrapped inside #ifndef DISABLE_DEBUG_INFO , this means that you have to define this to compile at the moment. Updated tango 0.99.9 patch to include updated EH runtime code, which is needed for LLVM 2.7 as well.
author Tomas Lindquist Olsen
date Wed, 19 May 2010 12:42:32 +0200
parents a413ae7329bf
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
1
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
2 // Compiler implementation of the D programming language
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
3 // Copyright (c) 1999-2009 by Digital Mars
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
4 // All Rights Reserved
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
5 // written by Walter Bright
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
6 // http://www.digitalmars.com
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
7 // License for redistribution is by either the Artistic License
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
8 // in artistic.txt, or the GNU General Public License in gnu.txt.
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
9 // See the included readme.txt for details.
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
10
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
11 #ifndef DMD_ATTRIB_H
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
12 #define DMD_ATTRIB_H
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
13
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
14 #ifdef __DMC__
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
15 #pragma once
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
16 #endif /* __DMC__ */
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
17
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
18 #include "dsymbol.h"
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
19
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
20 struct Expression;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
21 struct Statement;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
22 struct LabelDsymbol;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
23 struct Initializer;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
24 struct Module;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
25 struct Condition;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
26 #ifdef _DH
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
27 struct HdrGenState;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
28 #endif
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
29
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
30 /**************************************************************/
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
31
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
32 struct AttribDeclaration : Dsymbol
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
33 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
34 Array *decl; // array of Dsymbol's
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
35
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
36 AttribDeclaration(Array *decl);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
37 virtual Array *include(Scope *sc, ScopeDsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
38 int addMember(Scope *sc, ScopeDsymbol *s, int memnum);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
39 void setScopeNewSc(Scope *sc,
1602
a413ae7329bf Merge DMD r243: some harmonization with D2 dmd
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
40 StorageClass newstc, enum LINK linkage, enum PROT protection, int explictProtection,
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
41 unsigned structalign);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
42 void semanticNewSc(Scope *sc,
1602
a413ae7329bf Merge DMD r243: some harmonization with D2 dmd
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
43 StorageClass newstc, enum LINK linkage, enum PROT protection, int explictProtection,
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
44 unsigned structalign);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
45 void semantic(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
46 void semantic2(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
47 void semantic3(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
48 void inlineScan();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
49 void addComment(unsigned char *comment);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
50 void emitComment(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
51 const char *kind();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
52 int oneMember(Dsymbol **ps);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
53 int hasPointers();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
54 void checkCtorConstInit();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
55 void addLocalClass(ClassDeclarations *);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
56 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
57 void toJsonBuffer(OutBuffer *buf);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
58 AttribDeclaration *isAttribDeclaration() { return this; }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
59
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
60 #if IN_DMD
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
61 virtual void toObjFile(int multiobj); // compile to .obj file
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
62 int cvMember(unsigned char *p);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
63 #endif
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
64
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
65 #if IN_LLVM
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
66 virtual void codegen(Ir*);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
67 #endif
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
68 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
69
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
70 struct StorageClassDeclaration: AttribDeclaration
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
71 {
1602
a413ae7329bf Merge DMD r243: some harmonization with D2 dmd
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
72 StorageClass stc;
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
73
1602
a413ae7329bf Merge DMD r243: some harmonization with D2 dmd
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
74 StorageClassDeclaration(StorageClass stc, Array *decl);
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
75 Dsymbol *syntaxCopy(Dsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
76 void setScope(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
77 void semantic(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
78 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
79
1602
a413ae7329bf Merge DMD r243: some harmonization with D2 dmd
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
80 static void stcToCBuffer(OutBuffer *buf, StorageClass stc);
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
81 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
82
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
83 struct LinkDeclaration : AttribDeclaration
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
84 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
85 enum LINK linkage;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
86
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
87 LinkDeclaration(enum LINK p, Array *decl);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
88 Dsymbol *syntaxCopy(Dsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
89 void setScope(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
90 void semantic(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
91 void semantic3(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
92 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
93 char *toChars();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
94 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
95
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
96 struct ProtDeclaration : AttribDeclaration
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
97 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
98 enum PROT protection;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
99
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
100 ProtDeclaration(enum PROT p, Array *decl);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
101 Dsymbol *syntaxCopy(Dsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
102 void importAll(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
103 void setScope(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
104 void semantic(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
105 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
106
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
107 static void protectionToCBuffer(OutBuffer *buf, enum PROT protection);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
108 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
109
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
110 struct AlignDeclaration : AttribDeclaration
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
111 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
112 unsigned salign;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
113
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
114 AlignDeclaration(Loc loc, unsigned sa, Array *decl);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
115 Dsymbol *syntaxCopy(Dsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
116 void setScope(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
117 void semantic(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
118 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
119 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
120
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
121 struct AnonDeclaration : AttribDeclaration
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
122 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
123 int isunion;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
124 int sem; // 1 if successful semantic()
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
125
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
126 AnonDeclaration(Loc loc, int isunion, Array *decl);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
127 Dsymbol *syntaxCopy(Dsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
128 void semantic(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
129 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
130 const char *kind();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
131 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
132
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
133 struct PragmaDeclaration : AttribDeclaration
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
134 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
135 Expressions *args; // array of Expression's
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
136
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
137 PragmaDeclaration(Loc loc, Identifier *ident, Expressions *args, Array *decl);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
138 Dsymbol *syntaxCopy(Dsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
139 void semantic(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
140 void setScope(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
141 int oneMember(Dsymbol **ps);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
142 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
143 const char *kind();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
144
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
145 #if IN_DMD
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
146 void toObjFile(int multiobj); // compile to .obj file
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
147 #endif
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
148
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
149 #if IN_LLVM
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
150 void codegen(Ir*);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
151 #endif
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
152 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
153
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
154 struct ConditionalDeclaration : AttribDeclaration
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
155 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
156 Condition *condition;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
157 Array *elsedecl; // array of Dsymbol's for else block
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
158
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
159 ConditionalDeclaration(Condition *condition, Array *decl, Array *elsedecl);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
160 Dsymbol *syntaxCopy(Dsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
161 int oneMember(Dsymbol **ps);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
162 void emitComment(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
163 Array *include(Scope *sc, ScopeDsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
164 void addComment(unsigned char *comment);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
165 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
166 void toJsonBuffer(OutBuffer *buf);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
167 void importAll(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
168 void setScope(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
169 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
170
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
171 struct StaticIfDeclaration : ConditionalDeclaration
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
172 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
173 ScopeDsymbol *sd;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
174 int addisdone;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
175
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
176 StaticIfDeclaration(Condition *condition, Array *decl, Array *elsedecl);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
177 Dsymbol *syntaxCopy(Dsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
178 int addMember(Scope *sc, ScopeDsymbol *s, int memnum);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
179 void semantic(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
180 void importAll(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
181 void setScope(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
182 const char *kind();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
183 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
184
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
185 // Mixin declarations
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
186
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
187 struct CompileDeclaration : AttribDeclaration
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
188 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
189 Expression *exp;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
190
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
191 ScopeDsymbol *sd;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
192 int compiled;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
193
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
194 CompileDeclaration(Loc loc, Expression *exp);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
195 Dsymbol *syntaxCopy(Dsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
196 int addMember(Scope *sc, ScopeDsymbol *sd, int memnum);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
197 void compileIt(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
198 void semantic(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
199 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
200 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
201
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1228
diff changeset
202 #endif /* DMD_ATTRIB_H */