Mercurial > projects > ddmd
comparison dmd/ArrayInitializer.d @ 128:e6e542f37b94
Some more Array -> Vector conversions
author | Eldar Insafutdinov <e.insafutdinov@gmail.com> |
---|---|
date | Sat, 04 Sep 2010 01:33:05 +0100 |
parents | 9ee9b55452cb |
children | 60bb0fe4563e |
comparison
equal
deleted
inserted
replaced
127:9ee9b55452cb | 128:e6e542f37b94 |
---|---|
270 { | 270 { |
271 //printf("ArrayInitializer.toDt('%s')\n", toChars()); | 271 //printf("ArrayInitializer.toDt('%s')\n", toChars()); |
272 Type tb = type.toBasetype(); | 272 Type tb = type.toBasetype(); |
273 Type tn = tb.nextOf().toBasetype(); | 273 Type tn = tb.nextOf().toBasetype(); |
274 | 274 |
275 scope Array dts = new Array(); | 275 scope dts = new Vector!(dt_t*)(); |
276 uint size; | 276 uint size; |
277 uint length; | 277 uint length; |
278 uint i; | 278 uint i; |
279 dt_t* dt; | 279 dt_t* dt; |
280 dt_t* d; | 280 dt_t* d; |
298 //printf("\tindex[%d] = %p, length = %u, dim = %u\n", i, idx, length, dim); | 298 //printf("\tindex[%d] = %p, length = %u, dim = %u\n", i, idx, length, dim); |
299 | 299 |
300 assert(length < dim); | 300 assert(length < dim); |
301 val = value[i]; | 301 val = value[i]; |
302 dt = val.toDt(); | 302 dt = val.toDt(); |
303 if (dts.data[length]) | 303 if (dts[length]) |
304 error(loc, "duplicate initializations for index %d", length); | 304 error(loc, "duplicate initializations for index %d", length); |
305 dts.data[length] = cast(void*)dt; | 305 dts[length] = dt; |
306 length++; | 306 length++; |
307 } | 307 } |
308 | 308 |
309 Expression edefault = tb.nextOf().defaultInit(Loc(0)); | 309 Expression edefault = tb.nextOf().defaultInit(Loc(0)); |
310 | 310 |
317 | 317 |
318 d = null; | 318 d = null; |
319 pdtend = &d; | 319 pdtend = &d; |
320 for (i = 0; i < dim; i++) | 320 for (i = 0; i < dim; i++) |
321 { | 321 { |
322 dt = cast(dt_t*)dts.data[i]; | 322 dt = dts[i]; |
323 if (dt) | 323 if (dt) |
324 pdtend = dtcat(pdtend, dt); | 324 pdtend = dtcat(pdtend, dt); |
325 else | 325 else |
326 { | 326 { |
327 for (int j = 0; j < n; j++) | 327 for (int j = 0; j < n; j++) |