Mercurial > projects > ddmd
diff dmd/interpret/Util.d @ 84:be2ab491772e
Expressions -> Vector!Expression
author | Eldar Insafutdinov <e.insafutdinov@gmail.com> |
---|---|
date | Mon, 30 Aug 2010 16:12:19 +0100 |
parents | 43073c7c7769 |
children | d8f19d85fadb |
line wrap: on
line diff
--- a/dmd/interpret/Util.d Mon Aug 30 18:42:04 2010 +0400 +++ b/dmd/interpret/Util.d Mon Aug 30 16:12:19 2010 +0100 @@ -24,14 +24,14 @@ { if (!arguments || arguments.dim != 1) return null; - Expression earg = cast(Expression)arguments.data[0]; + auto earg = arguments[0]; earg = earg.interpret(istate); if (earg is EXP_CANT_INTERPRET) return null; if (earg.op != TOKassocarrayliteral) return null; - AssocArrayLiteralExp aae = cast(AssocArrayLiteralExp)earg; - Expression e = new IntegerExp(aae.loc, aae.keys.dim, Type.tsize_t); + auto aae = cast(AssocArrayLiteralExp)earg; + auto e = new IntegerExp(aae.loc, aae.keys.dim, Type.tsize_t); return e; } @@ -42,14 +42,14 @@ } if (!arguments || arguments.dim != 2) return null; - Expression earg = cast(Expression)arguments.data[0]; + auto earg = arguments[0]; earg = earg.interpret(istate); if (earg is EXP_CANT_INTERPRET) return null; if (earg.op != TOKassocarrayliteral) return null; - AssocArrayLiteralExp aae = cast(AssocArrayLiteralExp)earg; - Expression e = new ArrayLiteralExp(aae.loc, aae.keys); + auto aae = cast(AssocArrayLiteralExp)earg; + auto e = new ArrayLiteralExp(aae.loc, aae.keys); Type elemType = (cast(TypeAArray)aae.type).index; e.type = new TypeSArray(elemType, new IntegerExp(arguments ? arguments.dim : 0)); return e; @@ -60,14 +60,14 @@ //printf("interpret_aaValues()\n"); if (!arguments || arguments.dim != 3) return null; - Expression earg = cast(Expression)arguments.data[0]; + auto earg = arguments[0]; earg = earg.interpret(istate); if (earg is EXP_CANT_INTERPRET) return null; if (earg.op != TOKassocarrayliteral) return null; - AssocArrayLiteralExp aae = cast(AssocArrayLiteralExp)earg; - Expression e = new ArrayLiteralExp(aae.loc, aae.values); + auto aae = cast(AssocArrayLiteralExp)earg; + auto e = new ArrayLiteralExp(aae.loc, aae.values); Type elemType = (cast(TypeAArray)aae.type).next; e.type = new TypeSArray(elemType, new IntegerExp(arguments ? arguments.dim : 0)); //printf("result is %s\n", e.toChars()); @@ -125,16 +125,16 @@ /*************************************** * Duplicate the elements array, then set field 'indexToChange' = newelem. */ -Expressions changeOneElement(Expressions oldelems, size_t indexToChange, void* newelem) +Expressions changeOneElement(Expressions oldelems, size_t indexToChange, Expression newelem) { - Expressions expsx = new Expressions(); + auto expsx = new Expressions(); expsx.setDim(oldelems.dim); for (size_t j = 0; j < expsx.dim; j++) { if (j == indexToChange) - expsx.data[j] = newelem; + expsx[j] = newelem; else - expsx.data[j] = oldelems.data[j]; + expsx[j] = oldelems[j]; } return expsx; } @@ -144,14 +144,14 @@ */ Expressions spliceElements(Expressions oldelems, Expressions newelems, size_t insertpoint) { - Expressions expsx = new Expressions(); + auto expsx = new Expressions(); expsx.setDim(oldelems.dim); for (size_t j = 0; j < expsx.dim; j++) { if (j >= insertpoint && j < insertpoint + newelems.dim) - expsx.data[j] = newelems.data[j - insertpoint]; + expsx[j] = newelems[j - insertpoint]; else - expsx.data[j] = oldelems.data[j]; + expsx[j] = oldelems[j]; } return expsx; } @@ -161,13 +161,13 @@ */ ArrayLiteralExp createBlockDuplicatedArrayLiteral(Type type, Expression elem, size_t dim) { - Expressions elements = new Expressions(); + auto elements = new Expressions(); elements.setDim(dim); for (size_t i = 0; i < dim; i++) { - elements.data[i] = cast(void*)elem; + elements[i] = elem; } - ArrayLiteralExp ae = new ArrayLiteralExp(Loc(0), elements); + auto ae = new ArrayLiteralExp(Loc(0), elements); ae.type = type; return ae; } @@ -182,7 +182,7 @@ structelems.setDim(sym.fields.dim); for (size_t j = 0; j < structelems.dim; j++) { - structelems.data[j] = cast(void*)(cast(VarDeclaration)(sym.fields[j])).type.defaultInit(Loc(0)); + structelems[j] = sym.fields[j].type.defaultInit(Loc(0)); } StructLiteralExp structinit = new StructLiteralExp(loc, sym, structelems); // Why doesn't the StructLiteralExp constructor do this, when