changeset 312:557e7af55dfc

associative arrays store copies (native, struct) and references (class) Walter <walter@digitalmars.com> 2005-03-15 mail:000801c52906$9ebce7d0$0200a8c0@colossus
author thomask
date Wed, 16 Mar 2005 11:58:17 +0000
parents 35a1df98caf1
children 2792ebbb8b9c
files run/InExpression_02.d run/InExpression_03.d run/InExpression_05.d run/InExpression_06.d run/InExpression_09.d run/InExpression_20.d
diffstat 6 files changed, 43 insertions(+), 73 deletions(-) [+]
line wrap: on
line diff
--- a/run/InExpression_02.d	Wed Mar 16 11:09:23 2005 +0000
+++ b/run/InExpression_02.d	Wed Mar 16 11:58:17 2005 +0000
@@ -12,7 +12,15 @@
 	array[key]=value;
 	int* ptr = key in array;
 	
-	assert( &value == ptr);
+	assert(value == *ptr);
+
+	value=2;
+	assert(value == 2);
+	assert(*ptr == 1);
+
+	*ptr = 3;
+	assert(value == 2);
+	assert(*ptr == 3);
 
 	return 0;
 }
--- a/run/InExpression_03.d	Wed Mar 16 11:09:23 2005 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-module dstress.run.InExpression_03;
-
-int main(){
-	int value=1;
-	char[] key = "eins";
-	int[char[]] array;
-	
-	array[key]=value;
-	int* ptr = key in array;
-	
-	assert(value == *ptr);
-
-	value++;
-
-	assert(value == *ptr);
-
-	return 0;
-}
--- a/run/InExpression_05.d	Wed Mar 16 11:09:23 2005 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-module dstress.run.InExpression_05;
-
-struct MyStruct{
-	int i;
-	char c;
-}
-
-int main(){
-	MyStruct value;
-	value.i = 1;
-	value.c = '1';
-	char[] key = "eins";
-	MyStruct[char[]] array;
-	
-	array[key]=value;
-	MyStruct* ptr = key in array;
-	
-	assert(&value == ptr);
-
-	return 0;
-}
--- a/run/InExpression_06.d	Wed Mar 16 11:09:23 2005 +0000
+++ b/run/InExpression_06.d	Wed Mar 16 11:58:17 2005 +0000
@@ -25,8 +25,8 @@
 	value.i++;
 	value.c--;
 
-	assert(value.i == ptr.i);
-	assert(value.c == ptr.c);
+	assert(value.i != ptr.i);
+	assert(value.c != ptr.c);
 
 	return 0;
 }
--- a/run/InExpression_09.d	Wed Mar 16 11:09:23 2005 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-// $HeadURL$
-// $Date$
-// $Author$
-
-module dstress.run.InExpression_09;
-
-class MyClass{
-	int i;
-	char c;
-}
-
-int main(){
-	MyClass value = new MyClass();
-	char[] key = "eins";
-	MyClass[char[]] array;
-	
-	array[key]=value;
-	MyClass* ptr = key in array;
-	
-	assert(value == *ptr);
-
-	return 0;
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run/InExpression_20.d	Wed Mar 16 11:58:17 2005 +0000
@@ -0,0 +1,32 @@
+// $HeadURL$
+// $Date$
+// $Author$
+
+module dstress.run.InExpression_20;
+
+class ArrayTest{
+	int i;
+}
+
+int main(){
+	ArrayTest[char[]] array;
+
+	ArrayTest at = new ArrayTest();
+	at.i=2;
+
+	array["key"]=at;
+
+	ArrayTest* ptr = "key" in array;
+	assert(at.i == 2);
+	assert(ptr.i == 2);
+
+	ptr.i = 3;
+	assert(at.i == 3);
+	assert(ptr.i == 3);
+
+	at.i = 4;
+	assert(at.i == 4);
+	assert(ptr.i == 4);
+
+	return 0;
+}