8 MODULE = XS::APItest:Hash PACKAGE = XS::APItest::Hash
10 #define UTF8KLEN(sv, len) (SvUTF8(sv) ? -(I32)len : (I32)len)
21 key = SvPV(key_sv, len);
22 RETVAL = hv_exists(hash, key, UTF8KLEN(key_sv, len));
35 key = SvPV(key_sv, len);
36 /* It's already mortal, so need to increase reference count. */
37 RETVAL = SvREFCNT_inc(hv_delete(hash, key, UTF8KLEN(key_sv, len), 0));
42 store_ent(hash, key, value)
52 result = hv_store_ent(hash, key, copy, 0);
53 SvSetMagicSV(copy, value);
58 /* It's about to become mortal, so need to increase reference count.
60 RETVAL = SvREFCNT_inc(HeVAL(result));
66 store(hash, key_sv, value)
77 key = SvPV(key_sv, len);
79 result = hv_store(hash, key, UTF8KLEN(key_sv, len), copy, 0);
80 SvSetMagicSV(copy, value);
85 /* It's about to become mortal, so need to increase reference count.
87 RETVAL = SvREFCNT_inc(*result);
102 key = SvPV(key_sv, len);
103 result = hv_fetch(hash, key, UTF8KLEN(key_sv, len), 0);
108 RETVAL = newSVsv(*result);
113 sub TIEHASH { bless {}, $_[0] }
114 sub STORE { $_[0]->{$_[1]} = $_[2] }
115 sub FETCH { $_[0]->{$_[1]} }
116 sub FIRSTKEY { my $a = scalar keys %{$_[0]}; each %{$_[0]} }
117 sub NEXTKEY { each %{$_[0]} }
118 sub EXISTS { exists $_[0]->{$_[1]} }
119 sub DELETE { delete $_[0]->{$_[1]} }
120 sub CLEAR { %{$_[0]} = () }
124 MODULE = XS::APItest PACKAGE = XS::APItest
132 printf("%5.3f\n",val);
137 #ifdef HAS_LONG_DOUBLE
148 #ifdef HAS_LONG_DOUBLE
149 # if defined(PERL_PRIfldbl) && (LONG_DOUBLESIZE > DOUBLESIZE)
150 long double val = 7.0;
151 printf("%5.3" PERL_PRIfldbl "\n",val);
154 printf("%5.3f\n",val);
174 printf("%5.3f\n",val);
251 call_sv(sv, flags, ...)
257 for (i=0; i<items-2; i++)
258 ST(i) = ST(i+2); /* pop first two args */
262 i = call_sv(sv, flags);
265 PUSHs(sv_2mortal(newSViv(i)));
268 call_pv(subname, flags, ...)
274 for (i=0; i<items-2; i++)
275 ST(i) = ST(i+2); /* pop first two args */
279 i = call_pv(subname, flags);
282 PUSHs(sv_2mortal(newSViv(i)));
285 call_method(methname, flags, ...)
291 for (i=0; i<items-2; i++)
292 ST(i) = ST(i+2); /* pop first two args */
296 i = call_method(methname, flags);
299 PUSHs(sv_2mortal(newSViv(i)));
309 i = eval_sv(sv, flags);
312 PUSHs(sv_2mortal(newSViv(i)));
315 eval_pv(p, croak_on_error)
321 PUSHs(eval_pv(p, croak_on_error));