2 do_kv(TARG,hash,kv,gimme,arglast)
9 register ARRAY *ary = stack;
10 STR **st = ary->ary_array;
11 register int sp = arglast[0];
16 int dokeys = (kv == O_KEYS || kv == O_HASH);
17 int dovalues = (kv == O_VALUES || kv == O_HASH);
19 if (gimme != G_ARRAY) {
21 (void)hiterinit(hash);
23 while (entry = hiternext(hash)) {
26 str_numset(TARG,(double)i);
31 (void)hiterinit(hash);
33 while (entry = hiternext(hash)) {
35 tmps = hiterkey(entry,&i);
38 (void)astore(ary,++sp,str_2mortal(str_make(tmps,i)));
41 tmpstr = Str_new(45,0);
44 sprintf(buf,"%d%%%d=%d\n",entry->hent_hash,
45 hash->tbl_max+1,entry->hent_hash & hash->tbl_max);
50 str_sset(tmpstr,hiterval(hash,entry));
51 (void)astore(ary,++sp,str_2mortal(tmpstr));