Mercurial > projects > ldc
annotate dmd2/mtype.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 | e4f7b5d9c68a |
children |
rev | line source |
---|---|
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
1 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
2 // Compiler implementation of the D programming language |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
3 // Copyright (c) 1999-2007 by Digital Mars |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
4 // All Rights Reserved |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
5 // written by Walter Bright |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
6 // http://www.digitalmars.com |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
7 // License for redistribution is by either the Artistic License |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
8 // in artistic.txt, or the GNU General Public License in gnu.txt. |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
9 // See the included readme.txt for details. |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
10 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
11 #ifndef DMD_MTYPE_H |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
12 #define DMD_MTYPE_H |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
13 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
14 #ifdef __DMC__ |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
15 #pragma once |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
16 #endif /* __DMC__ */ |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
17 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
18 #include "root.h" |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
19 #include "stringtable.h" |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
20 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
21 #include "arraytypes.h" |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
22 #include "expression.h" |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
23 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
24 #if IN_LLVM |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
25 #include "../ir/irfuncty.h" |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
26 namespace llvm { class Type; } |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
27 class Ir; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
28 class IrType; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
29 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
30 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
31 struct Scope; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
32 struct Identifier; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
33 struct Expression; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
34 struct StructDeclaration; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
35 struct ClassDeclaration; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
36 struct VarDeclaration; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
37 struct EnumDeclaration; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
38 struct TypedefDeclaration; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
39 struct TypeInfoDeclaration; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
40 struct Dsymbol; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
41 struct TemplateInstance; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
42 struct CppMangleState; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
43 enum LINK; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
44 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
45 struct TypeBasic; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
46 struct HdrGenState; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
47 struct Argument; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
48 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
49 // Back end |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
50 #if IN_GCC |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
51 union tree_node; typedef union tree_node TYPE; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
52 typedef TYPE type; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
53 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
54 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
55 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
56 typedef struct TYPE type; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
57 struct Symbol; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
58 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
59 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
60 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
61 enum ENUMTY |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
62 { |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
63 Tarray, // slice array, aka T[] |
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
64 Tsarray, // static array, aka T[dimension] |
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
65 Tnarray, // resizable array, aka T[new] |
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
66 Taarray, // associative array, aka T[type] |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
67 Tpointer, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
68 Treference, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
69 Tfunction, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
70 Tident, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
71 Tclass, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
72 Tstruct, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
73 Tenum, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
74 Ttypedef, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
75 Tdelegate, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
76 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
77 Tnone, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
78 Tvoid, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
79 Tint8, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
80 Tuns8, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
81 Tint16, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
82 Tuns16, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
83 Tint32, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
84 Tuns32, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
85 Tint64, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
86 Tuns64, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
87 Tfloat32, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
88 Tfloat64, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
89 Tfloat80, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
90 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
91 Timaginary32, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
92 Timaginary64, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
93 Timaginary80, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
94 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
95 Tcomplex32, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
96 Tcomplex64, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
97 Tcomplex80, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
98 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
99 Tbit, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
100 Tbool, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
101 Tchar, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
102 Twchar, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
103 Tdchar, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
104 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
105 Terror, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
106 Tinstance, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
107 Ttypeof, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
108 Ttuple, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
109 Tslice, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
110 Treturn, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
111 TMAX |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
112 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
113 typedef unsigned char TY; // ENUMTY |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
114 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
115 #define Tascii Tchar |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
116 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
117 extern int Tsize_t; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
118 extern int Tptrdiff_t; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
119 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
120 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
121 struct Type : Object |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
122 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
123 TY ty; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
124 unsigned char mod; // modifiers MODxxxx |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
125 /* pick this order of numbers so switch statements work better |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
126 */ |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
127 #define MODconst 1 // type is const |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
128 #define MODinvariant 4 // type is invariant |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
129 #define MODshared 2 // type is shared |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
130 char *deco; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
131 |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
132 /* These are cached values that are lazily evaluated by constOf(), invariantOf(), etc. |
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
133 * They should not be referenced by anybody but mtype.c. |
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
134 * They can be NULL if not lazily evaluated yet. |
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
135 * Note that there is no "shared immutable", because that is just immutable |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
136 */ |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
137 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
138 Type *cto; // MODconst ? mutable version of this type : const version |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
139 Type *ito; // MODinvariant ? mutable version of this type : invariant version |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
140 Type *sto; // MODshared ? mutable version of this type : shared mutable version |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
141 Type *scto; // MODshared|MODconst ? mutable version of this type : shared const version |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
142 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
143 Type *pto; // merged pointer to this type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
144 Type *rto; // reference to this type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
145 Type *arrayof; // array of this type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
146 TypeInfoDeclaration *vtinfo; // TypeInfo object for this Type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
147 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
148 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
149 type *ctype; // for back end |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
150 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
151 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
152 #define tvoid basic[Tvoid] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
153 #define tint8 basic[Tint8] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
154 #define tuns8 basic[Tuns8] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
155 #define tint16 basic[Tint16] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
156 #define tuns16 basic[Tuns16] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
157 #define tint32 basic[Tint32] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
158 #define tuns32 basic[Tuns32] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
159 #define tint64 basic[Tint64] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
160 #define tuns64 basic[Tuns64] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
161 #define tfloat32 basic[Tfloat32] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
162 #define tfloat64 basic[Tfloat64] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
163 #define tfloat80 basic[Tfloat80] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
164 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
165 #define timaginary32 basic[Timaginary32] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
166 #define timaginary64 basic[Timaginary64] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
167 #define timaginary80 basic[Timaginary80] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
168 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
169 #define tcomplex32 basic[Tcomplex32] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
170 #define tcomplex64 basic[Tcomplex64] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
171 #define tcomplex80 basic[Tcomplex80] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
172 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
173 #define tbit basic[Tbit] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
174 #define tbool basic[Tbool] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
175 #define tchar basic[Tchar] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
176 #define twchar basic[Twchar] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
177 #define tdchar basic[Tdchar] |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
178 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
179 // Some special types |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
180 #define tshiftcnt tint32 // right side of shift expression |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
181 // #define tboolean tint32 // result of boolean expression |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
182 #define tboolean tbool // result of boolean expression |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
183 #define tindex tint32 // array/ptr index |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
184 static Type *tvoidptr; // void* |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
185 #define terror basic[Terror] // for error recovery |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
186 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
187 #define tsize_t basic[Tsize_t] // matches size_t alias |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
188 #define tptrdiff_t basic[Tptrdiff_t] // matches ptrdiff_t alias |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
189 #define thash_t tsize_t // matches hash_t alias |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
190 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
191 static ClassDeclaration *typeinfo; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
192 static ClassDeclaration *typeinfoclass; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
193 static ClassDeclaration *typeinfointerface; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
194 static ClassDeclaration *typeinfostruct; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
195 static ClassDeclaration *typeinfotypedef; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
196 static ClassDeclaration *typeinfopointer; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
197 static ClassDeclaration *typeinfoarray; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
198 static ClassDeclaration *typeinfostaticarray; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
199 static ClassDeclaration *typeinfoassociativearray; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
200 static ClassDeclaration *typeinfoenum; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
201 static ClassDeclaration *typeinfofunction; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
202 static ClassDeclaration *typeinfodelegate; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
203 static ClassDeclaration *typeinfotypelist; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
204 static ClassDeclaration *typeinfoconst; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
205 static ClassDeclaration *typeinfoinvariant; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
206 static ClassDeclaration *typeinfoshared; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
207 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
208 static Type *basic[TMAX]; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
209 static unsigned char mangleChar[TMAX]; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
210 static unsigned char sizeTy[TMAX]; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
211 static StringTable stringtable; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
212 #if IN_LLVM |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
213 static StringTable deco_stringtable; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
214 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
215 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
216 // These tables are for implicit conversion of binary ops; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
217 // the indices are the type of operand one, followed by operand two. |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
218 static unsigned char impcnvResult[TMAX][TMAX]; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
219 static unsigned char impcnvType1[TMAX][TMAX]; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
220 static unsigned char impcnvType2[TMAX][TMAX]; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
221 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
222 // If !=0, give warning on implicit conversion |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
223 static unsigned char impcnvWarn[TMAX][TMAX]; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
224 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
225 Type(TY ty); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
226 virtual Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
227 int equals(Object *o); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
228 int dyncast() { return DYNCAST_TYPE; } // kludge for template.isType() |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
229 int covariant(Type *t); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
230 char *toChars(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
231 static char needThisPrefix(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
232 #if IN_LLVM |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
233 static void init(Ir*); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
234 #else |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
235 static void init(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
236 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
237 d_uns64 size(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
238 virtual d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
239 virtual unsigned alignsize(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
240 virtual Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
241 Type *trySemantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
242 // append the mangleof or a string uniquely identifying this type to buf |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
243 virtual void toDecoBuffer(OutBuffer *buf, int flag = 0, bool mangle=false); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
244 Type *merge(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
245 Type *merge2(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
246 virtual void toCBuffer(OutBuffer *buf, Identifier *ident, HdrGenState *hgs); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
247 virtual void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
248 void toCBuffer3(OutBuffer *buf, HdrGenState *hgs, int mod); |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
249 void modToBuffer(OutBuffer *buf); |
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
250 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
251 virtual void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
252 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
253 virtual int isintegral(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
254 virtual int isfloating(); // real, imaginary, or complex |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
255 virtual int isreal(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
256 virtual int isimaginary(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
257 virtual int iscomplex(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
258 virtual int isscalar(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
259 virtual int isunsigned(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
260 virtual int isauto(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
261 virtual int isString(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
262 virtual int isAssignable(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
263 virtual int checkBoolean(); // if can be converted to boolean value |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
264 virtual void checkDeprecated(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
265 int isConst() { return mod & MODconst; } |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
266 int isInvariant() { return mod & MODinvariant; } |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
267 int isMutable() { return !(mod & (MODconst | MODinvariant)); } |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
268 int isShared() { return mod & MODshared; } |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
269 int isSharedConst() { return mod == (MODshared | MODconst); } |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
270 Type *constOf(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
271 Type *invariantOf(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
272 Type *mutableOf(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
273 Type *sharedOf(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
274 Type *sharedConstOf(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
275 void fixTo(Type *t); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
276 void check(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
277 Type *castMod(unsigned mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
278 Type *addMod(unsigned mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
279 Type *addStorageClass(unsigned stc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
280 Type *pointerTo(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
281 Type *referenceTo(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
282 Type *arrayOf(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
283 virtual Type *makeConst(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
284 virtual Type *makeInvariant(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
285 virtual Type *makeShared(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
286 virtual Type *makeSharedConst(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
287 virtual Dsymbol *toDsymbol(Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
288 virtual Type *toBasetype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
289 virtual Type *toHeadMutable(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
290 virtual int isBaseOf(Type *t, int *poffset); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
291 virtual MATCH constConv(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
292 virtual MATCH implicitConvTo(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
293 virtual ClassDeclaration *isClassHandle(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
294 virtual Expression *getProperty(Loc loc, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
295 virtual Expression *dotExp(Scope *sc, Expression *e, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
296 virtual unsigned memalign(unsigned salign); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
297 virtual Expression *defaultInit(Loc loc = 0); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
298 virtual int isZeroInit(Loc loc = 0); // if initializer is 0 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
299 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
300 virtual dt_t **toDt(dt_t **pdt); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
301 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
302 Identifier *getTypeInfoIdent(int internal); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
303 virtual MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
304 virtual void resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol **ps); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
305 Expression *getInternalTypeInfo(Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
306 Expression *getTypeInfo(Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
307 virtual TypeInfoDeclaration *getTypeInfoDeclaration(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
308 virtual int builtinTypeInfo(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
309 virtual Type *reliesOnTident(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
310 virtual Expression *toExpression(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
311 virtual int hasPointers(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
312 //Type *next; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
313 virtual Type *nextOf(); |
1526
54b3c1394d62
Merged dmdfe 2.031.
Robert Clipsham <robert@octarineparrot.com>
parents:
1452
diff
changeset
|
314 uinteger_t sizemask(); |
54b3c1394d62
Merged dmdfe 2.031.
Robert Clipsham <robert@octarineparrot.com>
parents:
1452
diff
changeset
|
315 |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
316 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
317 static void error(Loc loc, const char *format, ...) IS_PRINTF(2); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
318 static void warning(Loc loc, const char *format, ...) IS_PRINTF(2); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
319 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
320 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
321 // For backend |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
322 virtual unsigned totym(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
323 virtual type *toCtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
324 virtual type *toCParamtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
325 virtual Symbol *toSymbol(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
326 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
327 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
328 // For eliminating dynamic_cast |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
329 virtual TypeBasic *isTypeBasic(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
330 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
331 #if IN_LLVM |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
332 static Ir* sir; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
333 IrType* irtype; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
334 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
335 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
336 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
337 struct TypeNext : Type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
338 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
339 Type *next; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
340 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
341 TypeNext(TY ty, Type *next); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
342 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
343 void checkDeprecated(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
344 Type *reliesOnTident(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
345 Type *nextOf(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
346 Type *makeConst(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
347 Type *makeInvariant(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
348 Type *makeShared(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
349 Type *makeSharedConst(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
350 MATCH constConv(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
351 void transitive(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
352 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
353 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
354 struct TypeBasic : Type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
355 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
356 const char *dstring; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
357 unsigned flags; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
358 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
359 TypeBasic(TY ty); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
360 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
361 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
362 unsigned alignsize(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
363 Expression *getProperty(Loc loc, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
364 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
365 char *toChars(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
366 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
367 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
368 void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
369 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
370 int isintegral(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
371 int isbit(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
372 int isfloating(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
373 int isreal(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
374 int isimaginary(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
375 int iscomplex(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
376 int isscalar(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
377 int isunsigned(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
378 MATCH implicitConvTo(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
379 Expression *defaultInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
380 int isZeroInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
381 int builtinTypeInfo(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
382 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
383 // For eliminating dynamic_cast |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
384 TypeBasic *isTypeBasic(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
385 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
386 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
387 struct TypeArray : TypeNext |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
388 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
389 TypeArray(TY ty, Type *next); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
390 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
391 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
392 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
393 // Static array, one with a fixed dimension |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
394 struct TypeSArray : TypeArray |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
395 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
396 Expression *dim; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
397 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
398 TypeSArray(Type *t, Expression *dim); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
399 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
400 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
401 unsigned alignsize(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
402 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
403 void resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol **ps); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
404 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
405 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
406 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
407 int isString(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
408 int isZeroInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
409 unsigned memalign(unsigned salign); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
410 MATCH constConv(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
411 MATCH implicitConvTo(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
412 Expression *defaultInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
413 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
414 dt_t **toDt(dt_t **pdt); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
415 dt_t **toDtElem(dt_t **pdt, Expression *e); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
416 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
417 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
418 TypeInfoDeclaration *getTypeInfoDeclaration(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
419 Expression *toExpression(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
420 int hasPointers(); |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
421 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
422 void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
423 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
424 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
425 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
426 type *toCtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
427 type *toCParamtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
428 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
429 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
430 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
431 // Dynamic array, no dimension |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
432 struct TypeDArray : TypeArray |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
433 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
434 TypeDArray(Type *t); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
435 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
436 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
437 unsigned alignsize(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
438 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
439 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
440 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
441 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
442 int isString(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
443 int isZeroInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
444 int checkBoolean(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
445 MATCH implicitConvTo(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
446 Expression *defaultInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
447 int builtinTypeInfo(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
448 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
449 TypeInfoDeclaration *getTypeInfoDeclaration(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
450 int hasPointers(); |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
451 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
452 void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
453 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
454 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
455 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
456 type *toCtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
457 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
458 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
459 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
460 struct TypeAArray : TypeArray |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
461 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
462 Type *index; // key type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
463 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
464 TypeAArray(Type *t, Type *index); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
465 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
466 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
467 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
468 void resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol **ps); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
469 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
470 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
471 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
472 Expression *defaultInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
473 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
474 int isZeroInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
475 int checkBoolean(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
476 TypeInfoDeclaration *getTypeInfoDeclaration(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
477 int hasPointers(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
478 MATCH implicitConvTo(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
479 MATCH constConv(Type *to); |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
480 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
481 void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
482 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
483 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
484 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
485 // Back end |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
486 Symbol *aaGetSymbol(const char *func, int flags); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
487 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
488 type *toCtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
489 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
490 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
491 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
492 struct TypePointer : TypeNext |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
493 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
494 TypePointer(Type *t); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
495 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
496 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
497 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
498 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
499 MATCH implicitConvTo(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
500 int isscalar(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
501 // LDC: pointers are unsigned |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
502 int isunsigned() { return TRUE; }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
503 Expression *defaultInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
504 int isZeroInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
505 TypeInfoDeclaration *getTypeInfoDeclaration(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
506 int hasPointers(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
507 |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
508 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
509 void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
510 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
511 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
512 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
513 type *toCtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
514 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
515 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
516 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
517 struct TypeReference : TypeNext |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
518 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
519 TypeReference(Type *t); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
520 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
521 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
522 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
523 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
524 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
525 Expression *defaultInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
526 int isZeroInit(Loc loc); |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
527 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
528 void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
529 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
530 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
531 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
532 enum RET |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
533 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
534 RETregs = 1, // returned in registers |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
535 RETstack = 2, // returned on stack |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
536 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
537 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
538 struct TypeFunction : TypeNext |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
539 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
540 // .next is the return type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
541 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
542 Arguments *parameters; // function parameters |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
543 int varargs; // 1: T t, ...) style for variable number of arguments |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
544 // 2: T t ...) style for variable number of arguments |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
545 bool isnothrow; // true: nothrow |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
546 bool ispure; // true: pure |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
547 bool isproperty; // can be called without parentheses |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
548 bool isref; // true: returns a reference |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
549 enum LINK linkage; // calling convention |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
550 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
551 int inuse; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
552 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
553 TypeFunction(Arguments *parameters, Type *treturn, int varargs, enum LINK linkage); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
554 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
555 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
556 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
557 void toCBuffer(OutBuffer *buf, Identifier *ident, HdrGenState *hgs); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
558 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
559 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
560 TypeInfoDeclaration *getTypeInfoDeclaration(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
561 Type *reliesOnTident(); |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
562 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
563 void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
564 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
565 bool parameterEscapes(Argument *p); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
566 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
567 int callMatch(Expression *ethis, Expressions *toargs); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
568 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
569 type *toCtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
570 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
571 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
572 enum RET retStyle(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
573 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
574 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
575 unsigned totym(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
576 #elif IN_LLVM |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
577 // LDC |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
578 IrFuncTy fty; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
579 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
580 FuncDeclaration* funcdecl; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
581 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
582 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
583 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
584 struct TypeDelegate : TypeNext |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
585 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
586 // .next is a TypeFunction |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
587 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
588 TypeDelegate(Type *t); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
589 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
590 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
591 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
592 unsigned alignsize(); // added in LDC |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
593 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
594 Expression *defaultInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
595 int isZeroInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
596 int checkBoolean(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
597 TypeInfoDeclaration *getTypeInfoDeclaration(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
598 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
599 int hasPointers(); |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
600 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
601 void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
602 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
603 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
604 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
605 type *toCtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
606 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
607 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
608 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
609 struct TypeQualified : Type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
610 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
611 Loc loc; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
612 Array idents; // array of Identifier's representing ident.ident.ident etc. |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
613 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
614 TypeQualified(TY ty, Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
615 void syntaxCopyHelper(TypeQualified *t); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
616 void addIdent(Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
617 void toCBuffer2Helper(OutBuffer *buf, HdrGenState *hgs); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
618 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
619 void resolveHelper(Loc loc, Scope *sc, Dsymbol *s, Dsymbol *scopesym, |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
620 Expression **pe, Type **pt, Dsymbol **ps); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
621 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
622 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
623 struct TypeIdentifier : TypeQualified |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
624 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
625 Identifier *ident; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
626 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
627 TypeIdentifier(Loc loc, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
628 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
629 //char *toChars(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
630 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
631 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
632 void resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol **ps); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
633 Dsymbol *toDsymbol(Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
634 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
635 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
636 Type *reliesOnTident(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
637 Expression *toExpression(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
638 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
639 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
640 /* Similar to TypeIdentifier, but with a TemplateInstance as the root |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
641 */ |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
642 struct TypeInstance : TypeQualified |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
643 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
644 TemplateInstance *tempinst; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
645 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
646 TypeInstance(Loc loc, TemplateInstance *tempinst); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
647 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
648 //char *toChars(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
649 //void toDecoBuffer(OutBuffer *buf, int flag, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
650 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
651 void resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol **ps); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
652 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
653 Dsymbol *toDsymbol(Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
654 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
655 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
656 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
657 struct TypeTypeof : TypeQualified |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
658 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
659 Expression *exp; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
660 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
661 TypeTypeof(Loc loc, Expression *exp); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
662 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
663 Dsymbol *toDsymbol(Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
664 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
665 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
666 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
667 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
668 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
669 struct TypeReturn : TypeQualified |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
670 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
671 TypeReturn(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
672 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
673 Dsymbol *toDsymbol(Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
674 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
675 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
676 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
677 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
678 struct TypeStruct : Type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
679 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
680 StructDeclaration *sym; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
681 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
682 TypeStruct(StructDeclaration *sym); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
683 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
684 unsigned alignsize(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
685 char *toChars(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
686 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
687 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
688 Dsymbol *toDsymbol(Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
689 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
690 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
691 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
692 unsigned memalign(unsigned salign); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
693 Expression *defaultInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
694 int isZeroInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
695 int isAssignable(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
696 int checkBoolean(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
697 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
698 dt_t **toDt(dt_t **pdt); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
699 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
700 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
701 TypeInfoDeclaration *getTypeInfoDeclaration(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
702 int hasPointers(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
703 MATCH implicitConvTo(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
704 MATCH constConv(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
705 Type *toHeadMutable(); |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
706 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
707 void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
708 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
709 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
710 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
711 type *toCtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
712 #elif IN_LLVM |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
713 // LDC |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
714 // cache the hasUnalignedFields check |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
715 // 0 = not checked, 1 = aligned, 2 = unaligned |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
716 int unaligned; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
717 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
718 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
719 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
720 struct TypeEnum : Type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
721 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
722 EnumDeclaration *sym; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
723 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
724 TypeEnum(EnumDeclaration *sym); |
1526
54b3c1394d62
Merged dmdfe 2.031.
Robert Clipsham <robert@octarineparrot.com>
parents:
1452
diff
changeset
|
725 Type *syntaxCopy(); |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
726 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
727 unsigned alignsize(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
728 char *toChars(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
729 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
730 Dsymbol *toDsymbol(Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
731 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
732 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
733 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
734 Expression *getProperty(Loc loc, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
735 int isintegral(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
736 int isfloating(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
737 int isscalar(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
738 int isunsigned(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
739 MATCH implicitConvTo(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
740 MATCH constConv(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
741 Type *toBasetype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
742 Expression *defaultInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
743 int isZeroInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
744 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
745 TypeInfoDeclaration *getTypeInfoDeclaration(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
746 int hasPointers(); |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
747 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
748 void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
749 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
750 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
751 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
752 type *toCtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
753 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
754 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
755 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
756 struct TypeTypedef : Type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
757 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
758 TypedefDeclaration *sym; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
759 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
760 TypeTypedef(TypedefDeclaration *sym); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
761 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
762 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
763 unsigned alignsize(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
764 char *toChars(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
765 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
766 Dsymbol *toDsymbol(Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
767 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
768 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
769 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
770 Expression *getProperty(Loc loc, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
771 int isbit(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
772 int isintegral(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
773 int isfloating(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
774 int isreal(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
775 int isimaginary(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
776 int iscomplex(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
777 int isscalar(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
778 int isunsigned(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
779 int checkBoolean(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
780 int isAssignable(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
781 Type *toBasetype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
782 MATCH implicitConvTo(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
783 MATCH constConv(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
784 Expression *defaultInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
785 int isZeroInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
786 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
787 dt_t **toDt(dt_t **pdt); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
788 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
789 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
790 TypeInfoDeclaration *getTypeInfoDeclaration(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
791 int hasPointers(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
792 Type *toHeadMutable(); |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
793 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
794 void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
795 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
796 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
797 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
798 type *toCtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
799 type *toCParamtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
800 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
801 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
802 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
803 struct TypeClass : Type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
804 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
805 ClassDeclaration *sym; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
806 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
807 TypeClass(ClassDeclaration *sym); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
808 d_uns64 size(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
809 char *toChars(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
810 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
811 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
812 Dsymbol *toDsymbol(Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
813 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
814 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
815 Expression *dotExp(Scope *sc, Expression *e, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
816 ClassDeclaration *isClassHandle(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
817 int isBaseOf(Type *t, int *poffset); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
818 MATCH implicitConvTo(Type *to); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
819 Expression *defaultInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
820 int isZeroInit(Loc loc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
821 MATCH deduceType(Scope *sc, Type *tparam, TemplateParameters *parameters, Objects *dedtypes); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
822 int isauto(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
823 int checkBoolean(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
824 TypeInfoDeclaration *getTypeInfoDeclaration(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
825 int hasPointers(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
826 int builtinTypeInfo(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
827 #if DMDV2 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
828 Type *toHeadMutable(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
829 MATCH constConv(Type *to); |
1577
e4f7b5d9c68a
DMD 2.032 Merge.
Robert Clipsham <robert@octarineparrot.com>
parents:
1526
diff
changeset
|
830 #if CPP_MANGLE |
1452
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
831 void toCppMangle(OutBuffer *buf, CppMangleState *cms); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
832 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
833 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
834 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
835 #if IN_DMD |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
836 type *toCtype(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
837 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
838 Symbol *toSymbol(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
839 #endif |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
840 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
841 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
842 struct TypeTuple : Type |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
843 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
844 Arguments *arguments; // types making up the tuple |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
845 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
846 TypeTuple(Arguments *arguments); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
847 TypeTuple(Expressions *exps); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
848 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
849 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
850 int equals(Object *o); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
851 Type *reliesOnTident(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
852 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
853 void toDecoBuffer(OutBuffer *buf, int flag, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
854 Expression *getProperty(Loc loc, Identifier *ident); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
855 TypeInfoDeclaration *getTypeInfoDeclaration(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
856 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
857 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
858 struct TypeSlice : TypeNext |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
859 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
860 Expression *lwr; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
861 Expression *upr; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
862 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
863 TypeSlice(Type *next, Expression *lwr, Expression *upr); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
864 Type *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
865 Type *semantic(Loc loc, Scope *sc); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
866 void resolve(Loc loc, Scope *sc, Expression **pe, Type **pt, Dsymbol **ps); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
867 void toCBuffer2(OutBuffer *buf, HdrGenState *hgs, int mod); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
868 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
869 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
870 /**************************************************************/ |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
871 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
872 //enum InOut { None, In, Out, InOut, Lazy }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
873 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
874 struct Argument : Object |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
875 { |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
876 //enum InOut inout; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
877 unsigned storageClass; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
878 Type *type; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
879 Identifier *ident; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
880 Expression *defaultArg; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
881 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
882 Argument(unsigned storageClass, Type *type, Identifier *ident, Expression *defaultArg); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
883 Argument *syntaxCopy(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
884 Type *isLazyArray(); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
885 void toDecoBuffer(OutBuffer *buf, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
886 static Arguments *arraySyntaxCopy(Arguments *args); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
887 static char *argsTypesToChars(Arguments *args, int varargs); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
888 static void argsCppMangle(OutBuffer *buf, CppMangleState *cms, Arguments *arguments, int varargs); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
889 static void argsToCBuffer(OutBuffer *buf, HdrGenState *hgs, Arguments *arguments, int varargs); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
890 static void argsToDecoBuffer(OutBuffer *buf, Arguments *arguments, bool mangle); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
891 static int isTPL(Arguments *arguments); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
892 static size_t dim(Arguments *arguments); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
893 static Argument *getNth(Arguments *arguments, size_t nth, size_t *pn = NULL); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
894 }; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
895 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
896 extern int PTRSIZE; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
897 extern int REALSIZE; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
898 extern int REALPAD; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
899 extern int Tsize_t; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
900 extern int Tptrdiff_t; |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
901 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
902 int arrayTypeCompatible(Loc loc, Type *t1, Type *t2); |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
903 |
638d16625da2
LDC 2 compiles again.
Robert Clipsham <robert@octarineparrot.com>
parents:
1029
diff
changeset
|
904 #endif /* DMD_MTYPE_H */ |