1 /******************************************************************************* 2 * 3 * !!!!! Do NOT edit this file directly! -- Edit PPPort_xs.PL instead. !!!!! 4 * 5 ******************************************************************************** 6 * 7 * Perl/Pollution/Portability 8 * 9 ******************************************************************************** 10 * 11 * $Revision: 8 $ 12 * $Author: mhx $ 13 * $Date: 2005/01/31 08:10:55 +0100 $ 14 * 15 ******************************************************************************** 16 * 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. 20 * 21 * This program is free software; you can redistribute it and/or 22 * modify it under the same terms as Perl itself. 23 * 24 *******************************************************************************/ 25 26 /* ========== BEGIN XSHEAD ================================================== */ 27 28 29 30 /* =========== END XSHEAD =================================================== */ 31 32 #include "EXTERN.h" 33 #include "perl.h" 34 #include "XSUB.h" 35 36 /* ========== BEGIN XSINIT ================================================== */ 37 38 /* ---- from parts/inc/call ---- */ 39 #define NEED_eval_pv 40 41 /* ---- from parts/inc/grok ---- */ 42 #define NEED_grok_number 43 #define NEED_grok_numeric_radix 44 #define NEED_grok_bin 45 #define NEED_grok_hex 46 #define NEED_grok_oct 47 48 /* ---- from parts/inc/newCONSTSUB ---- */ 49 #define NEED_newCONSTSUB 50 51 /* ---- from parts/inc/newRV ---- */ 52 #define NEED_newRV_noinc 53 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 60 61 /* ---- from parts/inc/SvPV ---- */ 62 #define NEED_sv_2pv_nolen 63 #define NEED_sv_2pvbyte 64 65 /* =========== END XSINIT =================================================== */ 66 67 #include "ppport.h" 68 69 /* ========== BEGIN XSMISC ================================================== */ 70 71 /* ---- from parts/inc/exception ---- */ 72 /* defined in module3.c */ 73 int exception(int throw_e); 74 75 /* ---- from parts/inc/misc ---- */ 76 XS(XS_Devel__PPPort_dXSTARG); /* prototype */ 77 XS(XS_Devel__PPPort_dXSTARG) 78 1 { 79 1 dXSARGS; 80 1 dXSTARG; 81 1 IV iv; 82 1 SP -= items; 83 1 iv = SvIV(ST(0)) + 1; 84 1 PUSHi(iv); 85 1 XSRETURN(1); 86 } 87 88 /* ---- from parts/inc/MY_CXT ---- */ 89 #define MY_CXT_KEY "Devel::PPPort::_guts" XS_VERSION 90 91 typedef struct { 92 /* Put Global Data in here */ 93 int dummy; 94 } my_cxt_t; 95 96 START_MY_CXT 97 98 /* ---- from parts/inc/newCONSTSUB ---- */ 99 void call_newCONSTSUB_1(void) 100 1 { 101 #ifdef PERL_NO_GET_CONTEXT 102 dTHX; 103 #endif 104 1 newCONSTSUB(gv_stashpv("Devel::PPPort", FALSE), "test_value_1", newSViv(1)); 105 } 106 107 extern void call_newCONSTSUB_2(void); 108 extern void call_newCONSTSUB_3(void); 109 110 /* ---- from parts/inc/sv_xpvf ---- */ 111 static SV * test_vnewSVpvf(pTHX_ const char *pat, ...) 112 1 { 113 1 SV *sv; 114 1 va_list args; 115 1 va_start(args, pat); 116 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) 117 1 sv = vnewSVpvf(pat, &args); 118 #else 119 sv = newSVpv(pat, 0); 120 #endif 121 1 va_end(args); 122 1 return sv; 123 } 124 125 static void test_sv_vcatpvf(pTHX_ SV *sv, const char *pat, ...) 126 1 { 127 1 va_list args; 128 1 va_start(args, pat); 129 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) 130 1 sv_vcatpvf(sv, pat, &args); 131 #else 132 sv_catpv(sv, pat); 133 #endif 134 va_end(args); 135 } 136 137 static void test_sv_vsetpvf(pTHX_ SV *sv, const char *pat, ...) 138 1 { 139 1 va_list args; 140 1 va_start(args, pat); 141 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) 142 1 sv_vsetpvf(sv, pat, &args); 143 #else 144 sv_setpv(sv, pat); 145 #endif 146 va_end(args); 147 } 148 149 /* =========== END XSMISC =================================================== */ 150 151 MODULE = Devel::PPPort PACKAGE = Devel::PPPort 152 153 BOOT: 154 /* ---- from parts/inc/misc ---- */ 155 21 newXS("Devel::PPPort::dXSTARG", XS_Devel__PPPort_dXSTARG, file); 156 157 /* ---- from parts/inc/MY_CXT ---- */ 158 { 159 21 MY_CXT_INIT; 160 /* If any of the fields in the my_cxt_t struct need 161 * to be initialised, do it here. 162 */ 163 21 MY_CXT.dummy = 42; 164 } 165 166 167 ##---------------------------------------------------------------------- 168 ## XSUBs from parts/inc/call 169 ##---------------------------------------------------------------------- 170 171 I32 172 G_SCALAR() 173 CODE: 174 2 RETVAL = G_SCALAR; 175 OUTPUT: 176 RETVAL 177 178 I32 179 G_ARRAY() 180 CODE: 181 2 RETVAL = G_ARRAY; 182 OUTPUT: 183 RETVAL 184 185 I32 186 G_DISCARD() 187 CODE: 188 2 RETVAL = G_DISCARD; 189 OUTPUT: 190 RETVAL 191 192 void 193 eval_sv(sv, flags) 194 SV* sv 195 I32 flags 196 PREINIT: 197 6 I32 i; 198 PPCODE: 199 6 PUTBACK; 200 6 i = eval_sv(sv, flags); 201 6 SPAGAIN; 202 6 EXTEND(SP, 1); 203 6 PUSHs(sv_2mortal(newSViv(i))); 204 205 void 206 eval_pv(p, croak_on_error) 207 char* p 208 I32 croak_on_error 209 PPCODE: 210 2 PUTBACK; 211 2 EXTEND(SP, 1); 212 2 PUSHs(eval_pv(p, croak_on_error)); 213 214 void 215 call_sv(sv, flags, ...) 216 SV* sv 217 I32 flags 218 PREINIT: 219 18 I32 i; 220 PPCODE: 221 45 for (i=0; i 8) /* play safe */ 257 ###### XSRETURN_UNDEF; 258 15 for (i=2; i 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) 838 1 sv_catpvf_mg(sv, "%s-%d", "Perl", 42); 839 #endif 840 841 void 842 Perl_sv_catpvf_mg(sv) 843 SV *sv 844 CODE: 845 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) 846 1 Perl_sv_catpvf_mg(aTHX_ sv, "%s-%d", "-Perl", 43); 847 #endif 848 849 void 850 sv_catpvf_mg_nocontext(sv) 851 SV *sv 852 CODE: 853 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) 854 #ifdef PERL_IMPLICIT_CONTEXT 855 sv_catpvf_mg_nocontext(sv, "%s-%d", "-Perl", 44); 856 #else 857 1 sv_catpvf_mg(sv, "%s-%d", "-Perl", 44); 858 #endif 859 #endif 860 861 void 862 sv_setpvf_mg(sv) 863 SV *sv 864 CODE: 865 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) 866 1 sv_setpvf_mg(sv, "%s-%d", "mhx", 42); 867 #endif 868 869 void 870 Perl_sv_setpvf_mg(sv) 871 SV *sv 872 CODE: 873 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) 874 1 Perl_sv_setpvf_mg(aTHX_ sv, "%s-%d", "foo", 43); 875 #endif 876 877 void 878 sv_setpvf_mg_nocontext(sv) 879 SV *sv 880 CODE: 881 #if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) 882 #ifdef PERL_IMPLICIT_CONTEXT 883 sv_setpvf_mg_nocontext(sv, "%s-%d", "bar", 44); 884 #else 885 1 sv_setpvf_mg(sv, "%s-%d", "bar", 44); 886 #endif 887 #endif 888 889 ##---------------------------------------------------------------------- 890 ## XSUBs from parts/inc/SvPV 891 ##---------------------------------------------------------------------- 892 893 IV 894 SvPVbyte(sv) 895 SV *sv 896 PREINIT: 897 1 STRLEN len; 898 1 const char *str; 899 CODE: 900 1 str = SvPVbyte(sv, len); 901 1 RETVAL = strEQ(str, "mhx") ? len : -1; 902 OUTPUT: 903 RETVAL 904 905 IV 906 SvPV_nolen(sv) 907 SV *sv 908 PREINIT: 909 1 const char *str; 910 CODE: 911 1 str = SvPV_nolen(sv); 912 1 RETVAL = strEQ(str, "mhx") ? 42 : 0; 913 OUTPUT: 914 RETVAL 915 916 ##---------------------------------------------------------------------- 917 ## XSUBs from parts/inc/threads 918 ##---------------------------------------------------------------------- 919 920 IV 921 no_THX_arg(sv) 922 SV *sv 923 CODE: 924 1 RETVAL = 1 + sv_2iv(sv); 925 OUTPUT: 926 RETVAL 927 928 void 929 with_THX_arg(error) 930 char *error 931 PPCODE: 932 1 Perl_croak(aTHX_ "%s", error); 933 934 ##---------------------------------------------------------------------- 935 ## XSUBs from parts/inc/uv 936 ##---------------------------------------------------------------------- 937 938 SV * 939 sv_setuv(uv) 940 UV uv 941 CODE: 942 1 RETVAL = newSViv(1); 943 1 sv_setuv(RETVAL, uv); 944 OUTPUT: 945 RETVAL 946 947 SV * 948 newSVuv(uv) 949 UV uv 950 CODE: 951 1 RETVAL = newSVuv(uv); 952 OUTPUT: 953 RETVAL 954 955 UV 956 sv_2uv(sv) 957 SV *sv 958 CODE: 959 2 RETVAL = sv_2uv(sv); 960 OUTPUT: 961 RETVAL 962 963 UV 964 SvUVx(sv) 965 SV *sv 966 CODE: 967 3 sv--; 968 3 RETVAL = SvUVx(++sv); 969 OUTPUT: 970 RETVAL 971 972 void 973 XSRETURN_UV() 974 PPCODE: 975 1 XSRETURN_UV(42); 976 977 void 978 PUSHu() 979 PREINIT: 980 1 dTARG; 981 PPCODE: 982 1 TARG = sv_newmortal(); 983 1 EXTEND(SP, 1); 984 1 PUSHu(42); 985 1 XSRETURN(1); 986 987 void 988 XPUSHu() 989 PREINIT: 990 1 dTARG; 991 PPCODE: 992 1 TARG = sv_newmortal(); 993 1 XPUSHu(43); 994 1 XSRETURN(1); 995 XSRETURN(1);