diff dmd/InterfaceDeclaration.d @ 125:767a01c2a272

BaseClasses -> Vector
author Eldar Insafutdinov <e.insafutdinov@gmail.com>
date Fri, 03 Sep 2010 22:17:54 +0100
parents 9e39c7de8438
children 60bb0fe4563e
line wrap: on
line diff
--- a/dmd/InterfaceDeclaration.d	Fri Sep 03 21:39:37 2010 +0400
+++ b/dmd/InterfaceDeclaration.d	Fri Sep 03 22:17:54 2010 +0100
@@ -104,7 +104,7 @@
 		// Expand any tuples in baseclasses[]
 		for (size_t i = 0; i < baseclasses.dim; )
 		{	
-			BaseClass b = cast(BaseClass)baseclasses.data[0];
+			auto b = baseclasses[0];
 			b.type = b.type.semantic(loc, sc);
 			Type tb = b.type.toBasetype();
 
@@ -116,7 +116,7 @@
 				for (size_t j = 0; j < dim; j++)
 				{	Argument arg = Argument.getNth(tup.arguments, j);
 				b = new BaseClass(arg.type, protection);
-				baseclasses.insert(i + j, cast(void*)b);
+				baseclasses.insert(i + j, b);
 				}
 			}
 			else
@@ -133,7 +133,7 @@
 			BaseClass b;
 			Type tb;
 
-			b = cast(BaseClass)baseclasses.data[i];
+			b = baseclasses[i];
 			b.type = b.type.semantic(loc, sc);
 			tb = b.type.toBasetype();
 			if (tb.ty == TY.Tclass)
@@ -151,7 +151,7 @@
 				// Check for duplicate interfaces
 				for (size_t j = 0; j < i; j++)
 				{
-					BaseClass b2 = cast(BaseClass)baseclasses.data[j];
+					auto b2 = baseclasses[j];
 					if (b2.base is tc.sym)
 						error("inherits from duplicate interface %s", b2.base.toChars());
 				}
@@ -188,7 +188,7 @@
 		}
 
 		interfaces_dim = baseclasses.dim;
-		interfaces = cast(BaseClass*)baseclasses.data;
+		interfaces = baseclasses.ptr;
 
 		interfaceSemantic(sc);
 
@@ -480,9 +480,8 @@
 		// of the fixup (*)
 
 		offset += vtblInterfaces.dim * (4 * PTRSIZE);
-		for (size_t i = 0; i < vtblInterfaces.dim; i++)
+		foreach (b; vtblInterfaces)
 		{	
-			BaseClass b = cast(BaseClass)vtblInterfaces.data[i];
 			ClassDeclaration id = b.base;
 
 			// ClassInfo