annotate dmd/StructInitializer.d @ 56:51605de93870

TupleExp.optimize UnrolledLoopStatement.ctor UnrolledLoopStatement.semantic UnrolledLoopStatement.blockExit OrOrExp.checkSideEffect FuncExp.syntaxCopy FuncLiteralDeclaration.syntaxCopy WhileStatement.hasBreak StructInitializer.toExpression StructLiteralExp.ctor StructLiteralExp.optimize BinExp.commonSemanticAssign ModAssignExp.opId Argument.isLazyArray CommaExp.implicitConvTo CommaExp.castTo TypeClass.isBaseOf createTypeInfoArray TypeTuple.getTypeInfoDeclaration TypeInfoTupleDeclaration.ctor TypeNext.constConv XorExp.implicitConvTo TemplateParameter.isTemplateValueParameter
author korDen
date Sat, 21 Aug 2010 14:16:53 +0400
parents b7d29f613539
children f708f0452e81
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
1 module dmd.StructInitializer;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
2
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
3 import dmd.Initializer;
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
4 import dmd.TOK;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
5 import dmd.FuncLiteralDeclaration;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
6 import dmd.TypeFunction;
56
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
7 import dmd.StructDeclaration;
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
8 import dmd.StructLiteralExp;
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
9 import dmd.ArrayTypes;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
10 import dmd.Array;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
11 import dmd.Loc;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
12 import dmd.Type;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
13 import dmd.Scope;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
14 import dmd.Identifier;
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
15 import dmd.CompoundStatement;
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
16 import dmd.AggregateDeclaration;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
17 import dmd.OutBuffer;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
18 import dmd.HdrGenState;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
19 import dmd.Expression;
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
20 import dmd.TypeStruct;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
21 import dmd.TY;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
22 import dmd.VarDeclaration;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
23 import dmd.Dsymbol;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
24 import dmd.Util;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
25 import dmd.ExpInitializer;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
26 import dmd.FuncExp;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
27 import dmd.LINK;
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
28
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
29 import dmd.backend.dt_t;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
30
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
31 class StructInitializer : Initializer
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
32 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
33 Identifiers field; // of Identifier *'s
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
34 Initializers value; // parallel array of Initializer *'s
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
35
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
36 Array vars; // parallel array of VarDeclaration *'s
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
37 AggregateDeclaration ad; // which aggregate this is for
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
38
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
39 this(Loc loc)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
40 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
41 super(loc);
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
42 ad = null;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
43
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
44 field = new Identifiers();
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
45 value = new Initializers();
51
b7d29f613539 StaticAssertStatement.syntaxCopy
korDen
parents: 2
diff changeset
46
b7d29f613539 StaticAssertStatement.syntaxCopy
korDen
parents: 2
diff changeset
47 vars = new Array();
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
48 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
49
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
50 Initializer syntaxCopy()
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
51 {
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
52 StructInitializer ai = new StructInitializer(loc);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
53
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
54 assert(field.dim == value.dim);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
55 ai.field.setDim(field.dim);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
56 ai.value.setDim(value.dim);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
57 for (int i = 0; i < field.dim; i++)
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
58 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
59 ai.field.data[i] = field.data[i];
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
60
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
61 Initializer init = cast(Initializer)value.data[i];
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
62 init = init.syntaxCopy();
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
63 ai.value.data[i] = cast(void*)init;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
64 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
65
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
66 return ai;
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
67 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
68
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
69 void addInit(Identifier field, Initializer value)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
70 {
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
71 //printf("StructInitializer.addInit(field = %p, value = %p)\n", field, value);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
72 this.field.push(cast(void*)field);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
73 this.value.push(cast(void*)value);
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
74 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
75
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
76 Initializer semantic(Scope sc, Type t)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
77 {
2
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
78 TypeStruct ts;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
79 int errors = 0;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
80
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
81 //printf("StructInitializer.semantic(t = %s) %s\n", t.toChars(), toChars());
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
82 vars.setDim(field.dim);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
83 t = t.toBasetype();
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
84 if (t.ty == Tstruct)
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
85 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
86 uint i;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
87 uint fieldi = 0;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
88
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
89 ts = cast(TypeStruct)t;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
90 ad = ts.sym;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
91 for (i = 0; i < field.dim; i++)
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
92 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
93 Identifier id = cast(Identifier)field.data[i];
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
94 Initializer val = cast(Initializer)value.data[i];
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
95 Dsymbol s;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
96 VarDeclaration v;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
97
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
98 if (id is null)
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
99 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
100 if (fieldi >= ad.fields.dim)
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
101 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
102 error(loc, "too many initializers for %s", ad.toChars());
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
103 field.remove(i);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
104 i--;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
105 continue;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
106 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
107 else
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
108 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
109 s = cast(Dsymbol)ad.fields.data[fieldi];
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
110 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
111 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
112 else
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
113 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
114 //s = ad.symtab.lookup(id);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
115 s = ad.search(loc, id, 0);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
116 if (!s)
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
117 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
118 error(loc, "'%s' is not a member of '%s'", id.toChars(), t.toChars());
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
119 continue;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
120 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
121
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
122 // Find out which field index it is
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
123 for (fieldi = 0; 1; fieldi++)
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
124 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
125 if (fieldi >= ad.fields.dim)
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
126 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
127 s.error("is not a per-instance initializable field");
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
128 break;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
129 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
130 if (s == cast(Dsymbol)ad.fields.data[fieldi])
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
131 break;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
132 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
133 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
134 if (s && (v = s.isVarDeclaration()) !is null)
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
135 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
136 val = val.semantic(sc, v.type);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
137 value.data[i] = cast(void*)val;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
138 vars.data[i] = cast(void*)v;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
139 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
140 else
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
141 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
142 error(loc, "%s is not a field of %s", id ? id.toChars() : s.toChars(), ad.toChars());
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
143 errors = 1;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
144 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
145 fieldi++;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
146 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
147 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
148 else if (t.ty == Tdelegate && value.dim == 0)
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
149 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
150 /* Rewrite as empty delegate literal { }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
151 */
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
152 Arguments arguments = new Arguments;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
153 Type tf = new TypeFunction(arguments, null, 0, LINK.LINKd);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
154 FuncLiteralDeclaration fd = new FuncLiteralDeclaration(loc, Loc(0), tf, TOK.TOKdelegate, null);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
155 fd.fbody = new CompoundStatement(loc, new Statements());
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
156 fd.endloc = loc;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
157 Expression e = new FuncExp(loc, fd);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
158 ExpInitializer ie = new ExpInitializer(loc, e);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
159 return ie.semantic(sc, t);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
160 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
161 else
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
162 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
163 error(loc, "a struct is not a valid initializer for a %s", t.toChars());
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
164 errors = 1;
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
165 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
166 if (errors)
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
167 {
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
168 field.setDim(0);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
169 value.setDim(0);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
170 vars.setDim(0);
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
171 }
7427ded8caf7 Removed unreferenced modules
korDen
parents: 0
diff changeset
172 return this;
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
173 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
174
56
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
175 /***************************************
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
176 * This works by transforming a struct initializer into
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
177 * a struct literal. In the future, the two should be the
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
178 * same thing.
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
179 */
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
180 Expression toExpression()
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
181 {
56
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
182 Expression e;
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
183
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
184 //printf("StructInitializer.toExpression() %s\n", toChars());
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
185 if (!ad) // if fwd referenced
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
186 {
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
187 return null;
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
188 }
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
189 StructDeclaration sd = ad.isStructDeclaration();
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
190 if (!sd)
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
191 return null;
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
192 Expressions elements = new Expressions();
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
193 for (size_t i = 0; i < value.dim; i++)
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
194 {
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
195 if (field.data[i])
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
196 goto Lno;
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
197 Initializer iz = cast(Initializer)value.data[i];
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
198 if (!iz)
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
199 goto Lno;
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
200 Expression ex = iz.toExpression();
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
201 if (!ex)
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
202 goto Lno;
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
203 elements.push(cast(void*)ex);
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
204 }
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
205 e = new StructLiteralExp(loc, sd, elements);
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
206 e.type = sd.type;
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
207 return e;
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
208
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
209 Lno:
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
210 delete elements;
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
211 //error(loc, "struct initializers as expressions are not allowed");
51605de93870 TupleExp.optimize
korDen
parents: 51
diff changeset
212 return null;
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
213 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
214
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
215 void toCBuffer(OutBuffer buf, HdrGenState* hgs)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
216 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
217 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
218 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
219
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
220 dt_t* toDt()
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
221 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
222 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
223 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
224
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
225 StructInitializer isStructInitializer() { return this; }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
226 }