5 static void throws_exception(int throw_e)
11 static int exception(int throw_e)
15 SV *caught = get_sv("XS::APItest::exception_caught", 0);
18 throws_exception(throw_e);
32 MODULE = XS::APItest:Hash PACKAGE = XS::APItest::Hash
34 #define UTF8KLEN(sv, len) (SvUTF8(sv) ? -(I32)len : (I32)len)
45 key = SvPV(key_sv, len);
46 RETVAL = hv_exists(hash, key, UTF8KLEN(key_sv, len));
59 key = SvPV(key_sv, len);
60 /* It's already mortal, so need to increase reference count. */
61 RETVAL = SvREFCNT_inc(hv_delete(hash, key, UTF8KLEN(key_sv, len), 0));
66 store_ent(hash, key, value)
76 result = hv_store_ent(hash, key, copy, 0);
77 SvSetMagicSV(copy, value);
82 /* It's about to become mortal, so need to increase reference count.
84 RETVAL = SvREFCNT_inc(HeVAL(result));
90 store(hash, key_sv, value)
101 key = SvPV(key_sv, len);
103 result = hv_store(hash, key, UTF8KLEN(key_sv, len), copy, 0);
104 SvSetMagicSV(copy, value);
109 /* It's about to become mortal, so need to increase reference count.
111 RETVAL = SvREFCNT_inc(*result);
126 key = SvPV(key_sv, len);
127 result = hv_fetch(hash, key, UTF8KLEN(key_sv, len), 0);
132 RETVAL = newSVsv(*result);
137 sub TIEHASH { bless {}, $_[0] }
138 sub STORE { $_[0]->{$_[1]} = $_[2] }
139 sub FETCH { $_[0]->{$_[1]} }
140 sub FIRSTKEY { my $a = scalar keys %{$_[0]}; each %{$_[0]} }
141 sub NEXTKEY { each %{$_[0]} }
142 sub EXISTS { exists $_[0]->{$_[1]} }
143 sub DELETE { delete $_[0]->{$_[1]} }
144 sub CLEAR { %{$_[0]} = () }
148 MODULE = XS::APItest PACKAGE = XS::APItest
156 printf("%5.3f\n",val);
161 #ifdef HAS_LONG_DOUBLE
172 #ifdef HAS_LONG_DOUBLE
173 # if defined(PERL_PRIfldbl) && (LONG_DOUBLESIZE > DOUBLESIZE)
174 long double val = 7.0;
175 printf("%5.3" PERL_PRIfldbl "\n",val);
178 printf("%5.3f\n",val);
198 printf("%5.3f\n",val);
275 call_sv(sv, flags, ...)
281 for (i=0; i<items-2; i++)
282 ST(i) = ST(i+2); /* pop first two args */
286 i = call_sv(sv, flags);
289 PUSHs(sv_2mortal(newSViv(i)));
292 call_pv(subname, flags, ...)
298 for (i=0; i<items-2; i++)
299 ST(i) = ST(i+2); /* pop first two args */
303 i = call_pv(subname, flags);
306 PUSHs(sv_2mortal(newSViv(i)));
309 call_method(methname, flags, ...)
315 for (i=0; i<items-2; i++)
316 ST(i) = ST(i+2); /* pop first two args */
320 i = call_method(methname, flags);
323 PUSHs(sv_2mortal(newSViv(i)));
333 i = eval_sv(sv, flags);
336 PUSHs(sv_2mortal(newSViv(i)));
339 eval_pv(p, croak_on_error)
347 PUSHs(eval_pv(p, croak_on_error));