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++)