annotate dmd/attrib.h @ 1638:0de4525a9ed6

Apply workaround for #395 by klickverbot.
author Christian Kamm <kamm incasoftware de>
date Mon, 08 Mar 2010 20:06:08 +0100
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 */