annotate dmd/enum.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 6c36e3f49b28
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: 1195
diff changeset
1
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
2 // Compiler implementation of the D programming language
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
3 // Copyright (c) 1999-2008 by Digital Mars
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
4 // All Rights Reserved
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
5 // written by Walter Bright
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
6 // http://www.digitalmars.com
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
7 // License for redistribution is by either the Artistic License
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
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: 1195
diff changeset
9 // See the included readme.txt for details.
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
10
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
11 #ifndef DMD_ENUM_H
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
12 #define DMD_ENUM_H
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
13
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
14 #ifdef __DMC__
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
15 #pragma once
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
16 #endif /* __DMC__ */
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
17
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
18 #include "root.h"
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
19 #include "dsymbol.h"
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
20
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
21 struct Identifier;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
22 struct Type;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
23 struct Expression;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
24 #ifdef _DH
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
25 struct HdrGenState;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
26 #endif
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
27
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
28
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
29 struct EnumDeclaration : ScopeDsymbol
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
30 { /* enum ident : memtype { ... }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
31 */
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
32 Type *type; // the TypeEnum
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
33 Type *memtype; // type of the members
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
34
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
35 #if DMDV1
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
36 dinteger_t maxval;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
37 dinteger_t minval;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
38 dinteger_t defaultval; // default initializer
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
39 #else
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
40 Expression *maxval;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
41 Expression *minval;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
42 Expression *defaultval; // default initializer
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
43 #endif
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
44 int isdeprecated;
1628
6c36e3f49b28 Merge DMD r324: bugzilla 3663 and 3664 - fwd ref regressions
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
45 int isdone; // 0: not done
6c36e3f49b28 Merge DMD r324: bugzilla 3663 and 3664 - fwd ref regressions
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
46 // 1: semantic() successfully completed
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
47
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
48 EnumDeclaration(Loc loc, Identifier *id, Type *memtype);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
49 Dsymbol *syntaxCopy(Dsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
50 void semantic(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
51 int oneMember(Dsymbol **ps);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
52 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
53 Type *getType();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
54 const char *kind();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
55 #if DMDV2
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
56 Dsymbol *search(Loc, Identifier *ident, int flags);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
57 #endif
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
58 int isDeprecated(); // is Dsymbol deprecated?
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
59
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
60 void emitComment(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
61 void toJsonBuffer(OutBuffer *buf);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
62 void toDocBuffer(OutBuffer *buf);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
63
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
64 EnumDeclaration *isEnumDeclaration() { return this; }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
65
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
66 #if IN_DMD
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
67 void toObjFile(int multiobj); // compile to .obj file
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
68 void toDebug();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
69 int cvMember(unsigned char *p);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
70
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
71 Symbol *sinit;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
72 Symbol *toInitializer();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
73 #endif
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
74
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
75 #if IN_LLVM
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
76 void codegen(Ir*);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
77 #endif
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
78 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
79
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
80
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
81 struct EnumMember : Dsymbol
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
82 {
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
83 Expression *value;
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
84
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
85 EnumMember(Loc loc, Identifier *id, Expression *value);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
86 Dsymbol *syntaxCopy(Dsymbol *s);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
87 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
88 const char *kind();
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
89
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
90 void emitComment(Scope *sc);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
91 void toJsonBuffer(OutBuffer *buf);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
92 void toDocBuffer(OutBuffer *buf);
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
93
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
94 EnumMember *isEnumMember() { return this; }
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
95 };
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
96
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1195
diff changeset
97 #endif /* DMD_ENUM_H */