diff dmd/TemplateDeclaration.d @ 121:347de076ad34

TemplateParameters -> Vector
author Eldar Insafutdinov <e.insafutdinov@gmail.com>
date Thu, 02 Sep 2010 22:41:12 +0100
parents e28b18c23469
children 1765f3ef917d
line wrap: on
line diff
--- a/dmd/TemplateDeclaration.d	Thu Sep 02 20:19:14 2010 +0100
+++ b/dmd/TemplateDeclaration.d	Thu Sep 02 22:41:12 2010 +0100
@@ -57,7 +57,7 @@
 	TemplateTupleParameter tp = null;
 
 	if (dim)
-		tp = (cast(TemplateParameter)parameters.data[dim - 1]).isTemplateTupleParameter();
+		tp = parameters[dim - 1].isTemplateTupleParameter();
 
 	return tp;
 }
@@ -165,8 +165,8 @@
 			p.setDim(parameters.dim);
 			for (int i = 0; i < p.dim; i++)
 			{   
-				TemplateParameter tp = cast(TemplateParameter)parameters.data[i];
-				p.data[i] = cast(void*)tp.syntaxCopy();
+				auto tp = parameters[i];
+				p[i] = tp.syntaxCopy();
 			}
 		}
 		
@@ -228,23 +228,19 @@
 		{
 			origParameters = new TemplateParameters();
 			origParameters.setDim(parameters.dim);
-			for (int i = 0; i < parameters.dim; i++)
+			foreach (size_t i, TemplateParameter tp; parameters)
 			{
-				TemplateParameter tp = cast(TemplateParameter)parameters.data[i];
-				origParameters.data[i] = cast(void*)tp.syntaxCopy();
+				origParameters[i] = tp.syntaxCopy();
 			}
 		}
 
-		for (int i = 0; i < parameters.dim; i++)
+		foreach (tp; parameters)
 		{
-			TemplateParameter tp = cast(TemplateParameter)parameters.data[i];
 			tp.declareParameter(paramscope);
 		}
 
-		for (int i = 0; i < parameters.dim; i++)
+		foreach (size_t i, TemplateParameter tp; parameters)
 		{
-			TemplateParameter tp = cast(TemplateParameter)parameters.data[i];
-
 			tp.semantic(paramscope);
 			if (i + 1 != parameters.dim && tp.isTemplateTupleParameter())
 				error("template tuple parameter must be last one");
@@ -335,11 +331,10 @@
 		buf.writeByte(' ');
 		buf.writestring(ident.toChars());
 		buf.writeByte('(');
-		for (int i = 0; i < parameters.dim; i++)
+		foreach (size_t i, TemplateParameter tp; parameters)
 		{
-			TemplateParameter tp = cast(TemplateParameter)parameters.data[i];
 			if (hgs.ddoc)
-				tp = cast(TemplateParameter)origParameters.data[i];
+				tp = origParameters[i];
 			if (i)
 				buf.writeByte(',');
 			tp.toCBuffer(buf, hgs);
@@ -415,9 +410,8 @@
 		/// memset(&hgs, 0, hgs.sizeof);
 		buf.writestring(ident.toChars());
 		buf.writeByte('(');
-		for (int i = 0; i < parameters.dim; i++)
+		foreach (size_t i, TemplateParameter tp; parameters)
 		{
-			TemplateParameter tp = cast(TemplateParameter)parameters.data[i];
 			if (i)
 				buf.writeByte(',');
 			tp.toCBuffer(buf, &hgs);
@@ -496,7 +490,7 @@
 		for (int i = 0; i < dedtypes_dim; i++)
 		{	
 			MATCH m2;
-			TemplateParameter tp = cast(TemplateParameter)parameters.data[i];
+			auto tp = parameters[i];
 			Declaration sparam;
 
 			//printf("\targument [%d]\n", i);
@@ -637,7 +631,7 @@
 		ti.tiargs.setDim(parameters.dim);
 		for (int i = 0; i < ti.tiargs.dim; i++)
 		{
-			TemplateParameter tp = cast(TemplateParameter)parameters.data[i];
+			auto tp = parameters[i];
 
 			auto p = tp.dummyArg();
 			if (p)
@@ -772,7 +766,7 @@
 			for (size_t i = 0; i < n; i++)
 			{   
 				assert(i < parameters.dim);
-				auto tp2 = cast(TemplateParameter)parameters.data[i];
+				auto tp2 = parameters[i];
 				MATCH m;
 				Declaration sparam = null;
 
@@ -890,7 +884,7 @@
 		{
 			for (size_t i = 0; i < parameters.dim; i++)
 			{   
-				TemplateParameter tp2 = cast(TemplateParameter)parameters.data[i];
+				auto tp2 = parameters[i];
 				TemplateThisParameter ttp = tp2.isTemplateThisParameter();
 				if (ttp)
 				{	
@@ -1060,7 +1054,7 @@
 		 */
 		for (size_t i = nargsi; i < dedargs.dim; i++)
 		{
-			auto tp2 = cast(TemplateParameter)parameters.data[i];
+			auto tp2 = parameters[i];
 			//printf("tp2[%d] = %s\n", i, tp2.ident.toChars());
 			/* For T:T*, the dedargs is the T*, dedtypes is the T
 			 * But for function templates, we really need them to match