From: Ken Thompson Date: Thu, 26 Jun 2008 21:58:23 +0000 (-0700) Subject: add pointer to val type of maps X-Git-Tag: weekly.2009-11-06~3615 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e42d6a5fe28aec6b7e2fda63d9b000a71e6f37fa;p=gostls13.git add pointer to val type of maps SVN=124971 --- diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c index 849a72523b..5ff3f85a3f 100644 --- a/src/runtime/runtime.c +++ b/src/runtime/runtime.c @@ -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("<");