changeset 127:9ee9b55452cb

Identifiers, Initializers -> Vector
author Eldar Insafutdinov <e.insafutdinov@gmail.com>
date Fri, 03 Sep 2010 23:55:51 +0100
parents 1765f3ef917d
children e6e542f37b94
files dmd/ArrayInitializer.d dmd/ArrayTypes.d dmd/Initializer.d dmd/StructInitializer.d
diffstat 4 files changed, 27 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/dmd/ArrayInitializer.d	Fri Sep 03 23:25:55 2010 +0100
+++ b/dmd/ArrayInitializer.d	Fri Sep 03 23:55:51 2010 +0100
@@ -57,9 +57,9 @@
 				e = e.syntaxCopy();
 			ai.index[i] = e;
 
-			Initializer init = cast(Initializer)value.data[i];
+			auto init = value[i];
 			init = init.syntaxCopy();
-			ai.value.data[i] = cast(void*)init;
+			ai.value[i] = init;
 		}
 		return ai;
 	}
@@ -67,7 +67,7 @@
     void addInit(Expression index, Initializer value)
 	{
 		this.index.push(index);
-		this.value.push(cast(void*)value);
+		this.value.push(value);
 		dim = 0;
 		type = null;
 	}
@@ -108,9 +108,9 @@
 				length = cast(uint)idx.toInteger();
 			}
 
-			val = cast(Initializer)value.data[i];
+			val = value[i];
 			val = val.semantic(sc, t.nextOf());
-			value.data[i] = cast(void*)val;
+			value[i] = val;
 			length++;
 			if (length == 0)
 				error(loc, "array dimension overflow");
@@ -134,9 +134,8 @@
 				goto Laa;
 		}
 
-		for (size_t i = 0; i < value.dim; i++)
+		foreach (size_t i, Initializer iz; value)
 		{
-			Initializer iz = cast(Initializer)value.data[i];
 			if (iz)
 			{   
 				Type t = iz.inferType(sc);
@@ -153,7 +152,7 @@
 	Laa:
 		/* It's possibly an associative array initializer
 	     */
-	    Initializer iz = cast(Initializer)value.data[0];
+	    Initializer iz = value[0];
 	    Expression indexinit = index[0];
 	    if (iz && indexinit)
 		{
@@ -221,7 +220,7 @@
 			if (index[i])
 				j = cast(uint)(index[i].toInteger());
 			assert(j < edim);
-			Initializer iz = cast(Initializer)value.data[i];
+			Initializer iz = value[i];
 			if (!iz)
 				goto Lno;
 			Expression ex = iz.toExpression();
@@ -299,7 +298,7 @@
 			//printf("\tindex[%d] = %p, length = %u, dim = %u\n", i, idx, length, dim);
 
 			assert(length < dim);
-			val = cast(Initializer)value.data[i];
+			val = value[i];
 			dt = val.toDt();
 			if (dts.data[length])
 				error(loc, "duplicate initializations for index %d", length);
--- a/dmd/ArrayTypes.d	Fri Sep 03 23:25:55 2010 +0100
+++ b/dmd/ArrayTypes.d	Fri Sep 03 23:55:51 2010 +0100
@@ -7,6 +7,8 @@
 import dmd.BaseClass;
 import dmd.ClassDeclaration;
 import dmd.Argument;
+import dmd.Identifier;
+import dmd.Initializer;
 
 alias Vector!Object Objects;
 alias Vector!TemplateParameter TemplateParameters;
@@ -14,7 +16,5 @@
 alias Vector!BaseClass BaseClasses;
 alias Vector!ClassDeclaration ClassDeclarations;
 alias Vector!Argument Arguments;
-
-class Identifiers : Array { final typeof(this) copy() { auto a = new typeof(this); copyTo(a); return a; } }
-
-class Initializers : Array { final typeof(this) copy() { auto a = new typeof(this); copyTo(a); return a; } }
\ No newline at end of file
+alias Vector!Identifier Identifiers;
+alias Vector!Initializer Initializers;
\ No newline at end of file
--- a/dmd/Initializer.d	Fri Sep 03 23:25:55 2010 +0100
+++ b/dmd/Initializer.d	Fri Sep 03 23:55:51 2010 +0100
@@ -65,10 +65,10 @@
 			a = new Initializers();
 			a.setDim(ai.dim);
 			for (int i = 0; i < a.dim; i++)
-			{   Initializer e = cast(Initializer)ai.data[i];
+			{   Initializer e = ai[i];
 
 				e = e.syntaxCopy();
-				a.data[i] = cast(void*) e;
+				a[i] =  e;
 			}
 			}
 			return a;
--- a/dmd/StructInitializer.d	Fri Sep 03 23:25:55 2010 +0100
+++ b/dmd/StructInitializer.d	Fri Sep 03 23:55:51 2010 +0100
@@ -52,18 +52,18 @@
 	
     override Initializer syntaxCopy()
 	{
-		StructInitializer ai = new StructInitializer(loc);
+		auto ai = new StructInitializer(loc);
 
 		assert(field.dim == value.dim);
 		ai.field.setDim(field.dim);
 		ai.value.setDim(value.dim);
 		for (int i = 0; i < field.dim; i++)
 		{    
-			ai.field.data[i] = field.data[i];
+			ai.field[i] = field[i];
 
-			Initializer init = cast(Initializer)value.data[i];
+			auto init = value[i];
 			init = init.syntaxCopy();
-			ai.value.data[i] = cast(void*)init;
+			ai.value[i] = init;
 		}
 
 		return ai;
@@ -72,8 +72,8 @@
     void addInit(Identifier field, Initializer value)
 	{
 		//printf("StructInitializer.addInit(field = %p, value = %p)\n", field, value);
-		this.field.push(cast(void*)field);
-		this.value.push(cast(void*)value);
+		this.field.push(field);
+		this.value.push(value);
 	}
 	
     override Initializer semantic(Scope sc, Type t)
@@ -93,8 +93,8 @@
 			ad = ts.sym;
 			for (i = 0; i < field.dim; i++)
 			{
-				Identifier id = cast(Identifier)field.data[i];
-				Initializer val = cast(Initializer)value.data[i];
+				Identifier id = field[i];
+				Initializer val = value[i];
 				Dsymbol s;
 				VarDeclaration v;
 
@@ -137,7 +137,7 @@
 				if (s && (v = s.isVarDeclaration()) !is null)
 				{
 					val = val.semantic(sc, v.type);
-					value.data[i] = cast(void*)val;
+					value[i] = val;
 					vars.data[i] = cast(void*)v;
 				}
 				else
@@ -195,9 +195,9 @@
 		Expressions elements = new Expressions();
 		for (size_t i = 0; i < value.dim; i++)
 		{
-			if (field.data[i])
+			if (field[i])
 				goto Lno;
-			Initializer iz = cast(Initializer)value.data[i];
+			Initializer iz = value[i];
 			if (!iz)
 				goto Lno;
 			Expression ex = iz.toExpression();
@@ -237,7 +237,7 @@
 		for (i = 0; i < vars.dim; i++)
 		{
 			VarDeclaration v = cast(VarDeclaration)vars.data[i];
-			Initializer val = cast(Initializer)value.data[i];
+			Initializer val = value[i];
 
 			//printf("vars[%d] = %s\n", i, v.toChars());