6 MODULE = XS::APItest:Hash PACKAGE = XS::APItest::Hash
8 #define UTF8KLEN(sv, len) (SvUTF8(sv) ? -(I32)len : (I32)len)
19 key = SvPV(key_sv, len);
20 RETVAL = hv_exists(hash, key, UTF8KLEN(key_sv, len));
33 key = SvPV(key_sv, len);
34 /* It's already mortal, so need to increase reference count. */
35 RETVAL = SvREFCNT_inc(hv_delete(hash, key, UTF8KLEN(key_sv, len), 0));
40 store_ent(hash, key, value)
50 result = hv_store_ent(hash, key, copy, 0);
51 SvSetMagicSV(copy, value);
56 /* It's about to become mortal, so need to increase reference count.
58 RETVAL = SvREFCNT_inc(HeVAL(result));
64 store(hash, key_sv, value)
75 key = SvPV(key_sv, len);
77 result = hv_store(hash, key, UTF8KLEN(key_sv, len), copy, 0);
78 SvSetMagicSV(copy, value);
83 /* It's about to become mortal, so need to increase reference count.
85 RETVAL = SvREFCNT_inc(*result);
100 key = SvPV(key_sv, len);
101 result = hv_fetch(hash, key, UTF8KLEN(key_sv, len), 0);
106 RETVAL = newSVsv(*result);
111 sub TIEHASH { bless {}, $_[0] }
112 sub STORE { $_[0]->{$_[1]} = $_[2] }
113 sub FETCH { $_[0]->{$_[1]} }
114 sub FIRSTKEY { my $a = scalar keys %{$_[0]}; each %{$_[0]} }
115 sub NEXTKEY { each %{$_[0]} }
116 sub EXISTS { exists $_[0]->{$_[1]} }
117 sub DELETE { delete $_[0]->{$_[1]} }
118 sub CLEAR { %{$_[0]} = () }
122 MODULE = XS::APItest PACKAGE = XS::APItest
130 printf("%5.3f\n",val);
135 #ifdef HAS_LONG_DOUBLE
146 #ifdef HAS_LONG_DOUBLE
147 # if defined(PERL_PRIfldbl) && (LONG_DOUBLESIZE > DOUBLESIZE)
148 long double val = 7.0;
149 printf("%5.3" PERL_PRIfldbl "\n",val);
152 printf("%5.3f\n",val);
172 printf("%5.3f\n",val);
249 call_sv(sv, flags, ...)
255 for (i=0; i<items-2; i++)
256 ST(i) = ST(i+2); /* pop first two args */
260 i = call_sv(sv, flags);
263 PUSHs(sv_2mortal(newSViv(i)));
266 call_pv(subname, flags, ...)
272 for (i=0; i<items-2; i++)
273 ST(i) = ST(i+2); /* pop first two args */
277 i = call_pv(subname, flags);
280 PUSHs(sv_2mortal(newSViv(i)));
283 call_method(methname, flags, ...)
289 for (i=0; i<items-2; i++)
290 ST(i) = ST(i+2); /* pop first two args */
294 i = call_method(methname, flags);
297 PUSHs(sv_2mortal(newSViv(i)));
307 i = eval_sv(sv, flags);
310 PUSHs(sv_2mortal(newSViv(i)));
313 eval_pv(p, croak_on_error)
321 PUSHs(eval_pv(p, croak_on_error));