1 /*******************************************************************************
3 * !!!!! Do NOT edit this file directly! -- Edit PPPort_xs.PL instead. !!!!!
5 ********************************************************************************
7 * Perl/Pollution/Portability
9 ********************************************************************************
13 * $Date: 2005/01/31 08:10:55 +0100 $
15 ********************************************************************************
17 * Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
18 * Version 2.x, Copyright (C) 2001, Paul Marquess.
19 * Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
21 * This program is free software; you can redistribute it and/or
22 * modify it under the same terms as Perl itself.
24 *******************************************************************************/
26 /* ========== BEGIN XSHEAD ================================================== */
30 /* =========== END XSHEAD =================================================== */
36 /* ========== BEGIN XSINIT ================================================== */
38 /* ---- from parts/inc/call ---- */
41 /* ---- from parts/inc/grok ---- */
42 #define NEED_grok_number
43 #define NEED_grok_numeric_radix
48 /* ---- from parts/inc/newCONSTSUB ---- */
49 #define NEED_newCONSTSUB
51 /* ---- from parts/inc/newRV ---- */
52 #define NEED_newRV_noinc
54 /* ---- from parts/inc/sv_xpvf ---- */
55 #define NEED_vnewSVpvf
56 #define NEED_sv_catpvf_mg
57 #define NEED_sv_catpvf_mg_nocontext
58 #define NEED_sv_setpvf_mg
59 #define NEED_sv_setpvf_mg_nocontext
61 /* ---- from parts/inc/SvPV ---- */
62 #define NEED_sv_2pv_nolen
63 #define NEED_sv_2pvbyte
65 /* =========== END XSINIT =================================================== */
69 /* ========== BEGIN XSMISC ================================================== */
71 /* ---- from parts/inc/exception ---- */
72 static void throws_exception(int throw_e)
78 static int exception(int throw_e)
82 SV *caught = get_sv("Devel::PPPort::exception_caught", 0);
85 throws_exception(throw_e);
99 /* ---- from parts/inc/misc ---- */
100 XS(XS_Devel__PPPort_dXSTARG); /* prototype */
101 XS(XS_Devel__PPPort_dXSTARG)
107 iv = SvIV(ST(0)) + 1;
112 /* ---- from parts/inc/MY_CXT ---- */
113 #define MY_CXT_KEY "Devel::PPPort::_guts" XS_VERSION
116 /* Put Global Data in here */
122 /* ---- from parts/inc/newCONSTSUB ---- */
123 void call_newCONSTSUB_1(void)
125 #ifdef PERL_NO_GET_CONTEXT
128 newCONSTSUB(gv_stashpv("Devel::PPPort", FALSE), "test_value_1", newSViv(1));
131 extern void call_newCONSTSUB_2(void);
132 extern void call_newCONSTSUB_3(void);
134 /* ---- from parts/inc/sv_xpvf ---- */
135 static SV * test_vnewSVpvf(pTHX_ const char *pat, ...)
140 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
141 sv = vnewSVpvf(pat, &args);
143 sv = newSVpv(pat, 0);
149 static void test_sv_vcatpvf(pTHX_ SV *sv, const char *pat, ...)
153 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
154 sv_vcatpvf(sv, pat, &args);
161 static void test_sv_vsetpvf(pTHX_ SV *sv, const char *pat, ...)
165 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
166 sv_vsetpvf(sv, pat, &args);
173 /* =========== END XSMISC =================================================== */
175 MODULE = Devel::PPPort PACKAGE = Devel::PPPort
178 /* ---- from parts/inc/misc ---- */
179 newXS("Devel::PPPort::dXSTARG", XS_Devel__PPPort_dXSTARG, file);
181 /* ---- from parts/inc/MY_CXT ---- */
184 /* If any of the fields in the my_cxt_t struct need
185 * to be initialised, do it here.
191 ##----------------------------------------------------------------------
192 ## XSUBs from parts/inc/call
193 ##----------------------------------------------------------------------
224 i = eval_sv(sv, flags);
227 PUSHs(sv_2mortal(newSViv(i)));
230 eval_pv(p, croak_on_error)
236 PUSHs(eval_pv(p, croak_on_error));
239 call_sv(sv, flags, ...)
245 for (i=0; i<items-2; i++)
246 ST(i) = ST(i+2); /* pop first two args */
250 i = call_sv(sv, flags);
253 PUSHs(sv_2mortal(newSViv(i)));
256 call_pv(subname, flags, ...)
262 for (i=0; i<items-2; i++)
263 ST(i) = ST(i+2); /* pop first two args */
267 i = call_pv(subname, flags);
270 PUSHs(sv_2mortal(newSViv(i)));
273 call_argv(subname, flags, ...)
280 if (items > 8) /* play safe */
282 for (i=2; i<items; i++)
283 args[i-2] = SvPV_nolen(ST(i));
284 args[items-2] = NULL;
286 i = call_argv(subname, flags, args);
289 PUSHs(sv_2mortal(newSViv(i)));
292 call_method(methname, flags, ...)
298 for (i=0; i<items-2; i++)
299 ST(i) = ST(i+2); /* pop first two args */
303 i = call_method(methname, flags);
306 PUSHs(sv_2mortal(newSViv(i)));
308 ##----------------------------------------------------------------------
309 ## XSUBs from parts/inc/cop
310 ##----------------------------------------------------------------------
315 RETVAL = CopSTASHPV(PL_curcop);
322 RETVAL = CopFILE(PL_curcop);
326 ##----------------------------------------------------------------------
327 ## XSUBs from parts/inc/exception
328 ##----------------------------------------------------------------------
336 ##----------------------------------------------------------------------
337 ## XSUBs from parts/inc/grok
338 ##----------------------------------------------------------------------
347 pv = SvPV(string, len);
348 if (!grok_number(pv, len, &RETVAL))
361 pv = SvPV(string, len);
362 RETVAL = grok_bin(pv, &len, &flags, NULL);
374 pv = SvPV(string, len);
375 RETVAL = grok_hex(pv, &len, &flags, NULL);
387 pv = SvPV(string, len);
388 RETVAL = grok_oct(pv, &len, &flags, NULL);
393 Perl_grok_number(string)
399 pv = SvPV(string, len);
400 if (!Perl_grok_number(aTHX_ pv, len, &RETVAL))
406 Perl_grok_bin(string)
413 pv = SvPV(string, len);
414 RETVAL = Perl_grok_bin(aTHX_ pv, &len, &flags, NULL);
419 Perl_grok_hex(string)
426 pv = SvPV(string, len);
427 RETVAL = Perl_grok_hex(aTHX_ pv, &len, &flags, NULL);
432 Perl_grok_oct(string)
439 pv = SvPV(string, len);
440 RETVAL = Perl_grok_oct(aTHX_ pv, &len, &flags, NULL);
444 ##----------------------------------------------------------------------
445 ## XSUBs from parts/inc/limits
446 ##----------------------------------------------------------------------
451 RETVAL = IVSIZE == sizeof(IV);
458 RETVAL = UVSIZE == sizeof(UV);
465 RETVAL = sizeof(IVTYPE) == sizeof(IV);
472 RETVAL = sizeof(UVTYPE) == sizeof(UV);
476 ##----------------------------------------------------------------------
477 ## XSUBs from parts/inc/magic
478 ##----------------------------------------------------------------------
481 sv_catpv_mg(sv, string)
485 sv_catpv_mg(sv, string);
488 sv_catpvn_mg(sv, sv2)
495 str = SvPV(sv2, len);
496 sv_catpvn_mg(sv, str, len);
503 sv_catsv_mg(sv, sv2);
527 sv_setpvn_mg(sv, sv2)
534 str = SvPV(sv2, len);
535 sv_setpvn_mg(sv, str, len);
542 sv_setsv_mg(sv, sv2);
552 sv_usepvn_mg(sv, sv2)
559 str = SvPV(sv2, len);
560 New(42, copy, len+1, char);
561 Copy(str, copy, len+1, char);
562 sv_usepvn_mg(sv, copy, len);
564 ##----------------------------------------------------------------------
565 ## XSUBs from parts/inc/misc
566 ##----------------------------------------------------------------------
569 gv_stashpvn(name, create)
573 RETVAL = gv_stashpvn(name, strlen(name), create) != NULL;
582 RETVAL = get_sv(name, create) != NULL;
591 RETVAL = get_av(name, create) != NULL;
600 RETVAL = get_hv(name, create) != NULL;
609 RETVAL = get_cv(name, create) != NULL;
616 XPUSHs(newSVpvn("test", 4));
617 XPUSHs(newSVpvn("test", 2));
618 XPUSHs(newSVpvn("test", 0));
619 XPUSHs(newSVpvn(NULL, 2));
620 XPUSHs(newSVpvn(NULL, 0));
626 RETVAL = newSVsv(&PL_sv_undef);
633 RETVAL = newSVsv(&PL_sv_yes);
640 RETVAL = newSVsv(&PL_sv_no);
648 PL_na = strlen(string);
657 RETVAL = newSVsv(boolSV(value));
664 RETVAL = newSVsv(DEFSV);
671 RETVAL = SvTRUE(ERRSV);
680 RETVAL = newSVsv(UNDERBAR);
685 ##----------------------------------------------------------------------
686 ## XSUBs from parts/inc/mPUSH
687 ##----------------------------------------------------------------------
757 ##----------------------------------------------------------------------
758 ## XSUBs from parts/inc/MY_CXT
759 ##----------------------------------------------------------------------
765 RETVAL = MY_CXT.dummy == 42;
774 RETVAL = MY_CXT.dummy == 43;
786 ##----------------------------------------------------------------------
787 ## XSUBs from parts/inc/newCONSTSUB
788 ##----------------------------------------------------------------------
799 ##----------------------------------------------------------------------
800 ## XSUBs from parts/inc/newRV
801 ##----------------------------------------------------------------------
811 RETVAL = SvREFCNT(sv);
822 rv = newRV_noinc(sv);
823 RETVAL = SvREFCNT(sv);
828 ##----------------------------------------------------------------------
829 ## XSUBs from parts/inc/sv_xpvf
830 ##----------------------------------------------------------------------
835 RETVAL = test_vnewSVpvf(aTHX_ "%s-%d", "Perl", 42);
843 RETVAL = newSVsv(sv);
844 test_sv_vcatpvf(aTHX_ RETVAL, "%s-%d", "Perl", 42);
852 RETVAL = newSVsv(sv);
853 test_sv_vsetpvf(aTHX_ RETVAL, "%s-%d", "Perl", 42);
861 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
862 sv_catpvf_mg(sv, "%s-%d", "Perl", 42);
866 Perl_sv_catpvf_mg(sv)
869 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
870 Perl_sv_catpvf_mg(aTHX_ sv, "%s-%d", "-Perl", 43);
874 sv_catpvf_mg_nocontext(sv)
877 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
878 #ifdef PERL_IMPLICIT_CONTEXT
879 sv_catpvf_mg_nocontext(sv, "%s-%d", "-Perl", 44);
881 sv_catpvf_mg(sv, "%s-%d", "-Perl", 44);
889 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
890 sv_setpvf_mg(sv, "%s-%d", "mhx", 42);
894 Perl_sv_setpvf_mg(sv)
897 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
898 Perl_sv_setpvf_mg(aTHX_ sv, "%s-%d", "foo", 43);
902 sv_setpvf_mg_nocontext(sv)
905 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
906 #ifdef PERL_IMPLICIT_CONTEXT
907 sv_setpvf_mg_nocontext(sv, "%s-%d", "bar", 44);
909 sv_setpvf_mg(sv, "%s-%d", "bar", 44);
913 ##----------------------------------------------------------------------
914 ## XSUBs from parts/inc/SvPV
915 ##----------------------------------------------------------------------
924 str = SvPVbyte(sv, len);
925 RETVAL = strEQ(str, "mhx") ? len : -1;
935 str = SvPV_nolen(sv);
936 RETVAL = strEQ(str, "mhx") ? 42 : 0;
940 ##----------------------------------------------------------------------
941 ## XSUBs from parts/inc/threads
942 ##----------------------------------------------------------------------
948 RETVAL = 1 + sv_2iv(sv);
956 Perl_croak(aTHX_ "%s", error);
958 ##----------------------------------------------------------------------
959 ## XSUBs from parts/inc/uv
960 ##----------------------------------------------------------------------
967 sv_setuv(RETVAL, uv);
975 RETVAL = newSVuv(uv);
992 RETVAL = SvUVx(++sv);
1006 TARG = sv_newmortal();
1016 TARG = sv_newmortal();