]> Cypherpunks repositories - gostls13.git/commitdiff
add pointer to val type of maps
authorKen Thompson <ken@golang.org>
Thu, 26 Jun 2008 21:58:23 +0000 (14:58 -0700)
committerKen Thompson <ken@golang.org>
Thu, 26 Jun 2008 21:58:23 +0000 (14:58 -0700)
SVN=124971

src/runtime/runtime.c

index 849a72523be835e983fb83abe53cade4388059d3..5ff3f85a3f6d15213f497da3eda6f79db66ab3a0 100644 (file)
@@ -980,6 +980,36 @@ stringcopy(uint32 s, string *a, string *b)
        *a = *b;
 }
 
+static uint64
+pointerhash(uint32 s, void **a)
+{
+       prints("pointerhash\n");
+       return 0x12345;
+}
+
+static uint32
+pointerequal(uint32 s, void **a, void **b)
+{
+       prints("pointerequal\n");
+       return 0;
+}
+
+static void
+pointerprint(uint32 s, void **a)
+{
+       prints("pointerprint\n");
+}
+
+static void
+pointercopy(uint32 s, void **a, void **b)
+{
+       if(b == nil) {
+               *a = nil;
+               return;
+       }
+       *a = *b;
+}
+
 static uint32
 rnd(uint32 n, uint32 m)
 {
@@ -996,6 +1026,7 @@ algarray[] =
 {
        {       &memhash,       &memequal,      &memprint,      &memcopy        },
        {       &stringhash,    &stringequal,   &stringprint,   &stringcopy     },
+       {       &pointerhash,   &pointerequal,  &pointerprint,  &pointercopy    },
 };
 
 // newmap(keysize uint32, valsize uint32,
@@ -1008,8 +1039,8 @@ sys·newmap(uint32 keysize, uint32 valsize,
 {
        Hmap *m;
 
-       if(keyalg >= nelem(algarray) ||
-          valalg >= nelem(algarray)) {
+       if(keyalg >= 2 ||
+          valalg >= 3) {
                prints("0<=");
                sys·printint(keyalg);
                prints("<");