Mercurial > projects > ddmd
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